【发布时间】:2015-03-22 18:59:15
【问题描述】:
我正在尝试使用带有 <select> 的 ng-options 将数字整数值绑定到相应选项的列表。在我的控制器中,我有这样的东西:
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:
<div ng-controller="MyCtrl as ctrl">
<div>selectedUnitOrdinal: {{ctrl.selectedUnitOrdinal}}</div>
<select ng-model="ctrl.selectedUnitOrdinal" ng-options="unit.id as unit.text for unit in ctrl.unitsOptions"></select>
</div>
这里有一个jsFiddle 演示了这个问题,以及我已经采取但不满意的其他一些方法。
选择选项被初始化为一个空值,而不是本例中预期的“mV”。如果您选择不同的选项,绑定似乎可以正常工作 -- selectedUnitOrdinal 正确更新。
我注意到,如果您将初始模型值设置为字符串而不是数字,则初始选择有效(参见小提琴中的 #3)。
我真的希望 ng-options 能够很好地处理数字选项值。我怎样才能优雅地做到这一点?
【问题讨论】:
标签: angularjs ng-options angularjs-ng-options