Я пытаюсь использовать ng-опции с a связывать числовое целочисленное значение со списком соответствующих опций. В моем контроллере у меня есть что-то вроде этого:
myApp.controller('MyCtrl', function() {
var self = this;
var unitOptionsFromServer = {
2: "mA",
3: "A",
4: "mV",
5: "V",
6: "W",
7: "kW"
};
self.unitsOptions = Object.keys(unitOptionsFromServer).map(function (key) {
return { id: key, text: unitOptionsFromServer[key] };
});
self.selectedUnitOrdinal = 4; // Assume this value came from the server.
});
HTML:
selectedUnitOrdinal: {{ctrl.selectedUnitOrdinal}}
И вот является jsFiddle демонстрацией проблемы, и некоторые другие подходы я взял, но не довольно.
Избранная опция инициализируется с пустым значением вместо "мВ" как ожидалось в этом примере. Привязка, кажется, хорошо работает при выборе другой опции - selectedUnitOrdinal обновления правильно.
Я заметил что, если Вы устанавливаете начальное образцовое значение к строке вместо числа, затем начальные работы выбора (см. № 3 в скрипке).
Я действительно хотел бы ng-опции играть по правилам с числовыми значениями опции. Как я могу достигнуть этого изящно?
Сделайте идентификационное свойство в unitsOptions как номер
self.unitsOptions = Object.keys(unitOptionsFromServer).map(function (key) {
return { id: +key, text: unitOptionsFromServer[key] };
});