【问题标题】:How to set option value using ng:Options如何使用 ng:Options 设置选项值
【发布时间】:2013-01-29 07:44:51
【问题描述】:

显然 AngularJS 无法在 IE 中正确地将 <option> 元素列表构造为简单模板,因此它提供了 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) 我运气不好。

【问题讨论】:

标签: angularjs


【解决方案1】:

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

如您所见,Angular 将数组索引存储在 HTML 中。有关更多信息,请参阅AngularJS - value attribute for select

【讨论】:

  • 这是有道理的。在 Angular 世界中,唯一重要的是模型的更改。不幸的是,我试图将 Angular 融合到一些现有的 JQuery 驱动的操作中。我想我可以在我的 JQuery 代码中将key 拉出范围,但是在那里构建选择可能更容易(我没有得到ngOptions 插值的好处,所以这是一个折腾)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多