AngularJS,ng-options

时间:2014-09-27 20:35:56

标签: javascript angularjs

我研究AngularJS,我无法理解ng-options指令中表达式的含义是什么,这里是code的链接,我无法理解以下内容:

ng-options="net for net in networks"

我查看了docs,文档解释了上面的表达式:

  

数组中值的标签

因此每个选项中都有value属性,该值代表数组中的键,我的问题是表达式net for net in networks的工作方式我的意思是:

  • 我假设第一个net是键,第二个是值,所以表达式“说”在netwroks数组中取出该值的键并将其放在每个值中每个选项元素的属性。
  • 我无法理解的是net for net如何影响ng-model="network"

1 个答案:

答案 0 :(得分:1)

以下是我对您的简单解释:

label是向用户显示的选项元素的内容。

value是选择该选项时放置在ngModel绑定中的值,而不是您假设的option元素的value属性。

option元素的value属性由angular设置为array中相关项的索引(如果你检查plunker示例中的select元素,可以看到)。

修改

您可以将ng-options视为foreach循环。由于networks在这种情况下是一个字符串数组,net只是成为数组中的每个字符串项。

如果网络是一个对象数组,情况会有所不同。鉴于networks看起来像这样:

var networks = [
    { id: 10, name: 'Verizon' },
    { id: 20, name: 'AT&T' },
    { id: 30, name: 'Sprint' },
];

net将成为数组中的每个对象。在这种情况下,您可以使用表达式net.name for net in networks来显示网络的名称,但是为ngModel绑定network对象本身的值。如果您想使用id作为值,则可以使用表达式net.id as net.name for net in networks。请参阅更新后的代码here