Angular.js:HTML select元素,包含对象属性的ng-options

时间:2014-11-28 17:54:40

标签: javascript html angularjs select angularjs-ng-options

我正在构建我的第一个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 ..

1 个答案:

答案 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 byselect as语法时存在一个错误,我不会正确选择选择。因此,如果您使用1.2.x版本的角度去除select as语法并适当地绑定模型,您也可能希望更改数据模型以将其绑定为对象数组,而不是按原样绑定。