2014-09-27 97 views
0

我学习AngularJS,我不能明白什么是ng-options指令中的表达式的meanning,这里是对code一个链接,我不明白以下几点:AngularJS,NG选项

ng-options="net for net in networks" 

我已经看过的docs和文档解释上面的表达式为:在阵列

标签值

所以有每个选项里面的价值属性,价值代表了数组中的关键,我的问题是表达net for net in networks作品我怎么个意思:

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

回答

1

这里是我的文档为您简单的解释:

label是显示给用户的选择元素的内容。

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

选项元素的value属性是通过角度设置为array中相关项目的索引(正如您可以看到是否检查您的plunker示例中的select元素)。

编辑

你能想到的ng-optionsforeach循环。由于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绑定对象本身的值。如果您想使用id作为值,则可以使用表达式net.id as net.name for net in networks。请参阅更新的代码here

+0

你好,泰勒,谢谢你的回答,但我仍然不明白'net for net'如何影响任何东西,第一个'net'必须等于第二个'net',你能解释一下行为吗?你可以给我更多关于'net for net'如何连接'networks'和'ng-bind'的细节。 – 2014-09-28 00:59:22

+0

@AvielFadida请参阅我的更新回答。 – 2014-09-28 13:11:42

+0

谢谢泰勒。 – 2014-10-02 12:15:59