3

显然 AngularJS 无法<option>在 IE 中正确地将元素列表构造为简单的模板,因此它提供了ng:Options指令(参见https://github.com/angular/angular.js/issues/235)。

查看源代码后,我能够使用所需的标签构造选项,如下(JSFiddle):

<!-- what I'd like to do -->
<select>
    <option ng:repeat='key in keys' value='{{key}}'> {{lookup[key].firstName}} {{lookup[key].lastName}} </option>
</select>
<br/>
<br/>
<!-- what Angular lets me do -->
<select ng-model='key' ng:options='k as lookup[k].firstName + " " + lookup[k].lastName for k in keys'></select>

但是,当我使用 Firebug 检查选项时,我看到该值是一​​个数字索引,而不是我想要的键值(我希望将初始k值用作选项值)。

我没有深入研究代码,所以不知道我是否缺少表达式的另一部分(正则表达式似乎没有任何额外的相关关键字)。

我希望这里的某个人可能对这个指令足够了解,可以告诉我(1)怎么做,或者(2)我不走运。

4

1 回答 1

1

您所需的键值在您由 ng-model 指定的属性中,即key. 添加{{key}}到 HTML 的底部(就在最后一个选择列表之后)以查看它。

如您所见,Angular 将数组索引存储在 HTML 中。有关此的更多信息,请参阅AngularJS - 选择的值属性

于 2013-02-13T17:33:01.337 回答