我正在构建我的第一个AngularJS应用程序,我非常喜欢到目前为止看到的概念。
现在我有以下数据结构我想作为选择HTML元素引入视图:
var objs = {
"A1": 12234,
"A2": 2354,
"A3": 2323434
}
我尝试将数据结构objs绑定到select下拉列表,如下所示:
<select ng-model="finallySelectedEntry" ng-options="id as name for (name , id) in objs">
<option>--</option>
</select>
这导致:
<option value="A1" selected="selected">A1</option>
<option value="A2">A2</option>
<option value="A3">A3</option>
..但我希望:
<option value="12234" selected="selected">A1</option>
<option value="2354">A2</option>
<option value="2323434">A3</option>
切换到
<select ng-model="finallySelectedEntry" ng-options="name as id for (name , id) in objs">
不起作用..
有谁知道我的错是什么?我尽量避免使用ng-repeat ..
答案 0 :(得分:2)
使用哪个属性作为select的值并不重要,因为select无论如何都是使用angular作为数据模型进行管理,但是你需要使用track by
(track by id)来执行此操作: -
尝试: -
<select ng-model="finallySelectedEntry"
ng-options="id as name for (name , id) in objs track by id">
<强> Demo 强>
重要提示:
在我使用angular 1.3.x的演示中,在角度1.2.x中使用track by
和select as
语法时存在一个错误,我不会正确选择选择。因此,如果您使用1.2.x版本的角度去除select as语法并适当地绑定模型,您也可能希望更改数据模型以将其绑定为对象数组,而不是按原样绑定。