1

我正在构建我的第一个 AngularJS 应用程序,我真的很喜欢我目前看到的概念。

现在我有以下数据结构,我想将其作为选择 HTML 元素引入视图:

var objs = {
  "A1": 12234,
  "A2": 2354,
  "A3": 2323434
}

我尝试将数据结构 objs 绑定到一个选择下拉列表,如下所示:

<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 来做这件事。

4

1 回答 1

2

使用什么属性作为选择的值实际上并不重要,因为无论如何选择都是使用角度作为数据模型进行管理的,但是您需要使用track by(通过 id 跟踪)这样做:-

尝试:-

 <select ng-model="finallySelectedEntry" 
    ng-options="id as name for (name , id) in objs track by id">

演示

重要的提示:

在我使用 angular 1.3.x 的演示中,在使用angular 1.2.xtrack by中的select as语法时存在一个错误,我不会正确选择选择。因此,如果您使用 1.2.x 版本的 angular 摆脱 select as 语法并适当地绑定模型,您也可能希望更改数据模型以将其绑定为对象数组,而不是按原样绑定对象。

于 2014-11-28T18:09:04.493 回答