我研究AngularJS,我无法理解 ng-options
指令中表达式的含义是什么,这里是code的链接,我无法理解如下:
ng-options="net for net in networks"
我查看了docs,文档解释了上面的表达式:
数组中值的标签
所以每个选项里面都有value属性,值代表数组中的键,我的问题是表达式 net for net in networks
的工作原理我的意思是:
-
我假设第一个
net
是键,第二个是值,所以表达式是"saying"取netwroks
数组中该值的键并将其放在每个选项元素的每个值属性中 . -
我无法理解
net for net
如何影响ng-model="network"
1 回答
以下是我对您的文档的简单解释:
label
是向用户显示的选项元素的内容 .value
是选择该选项时放置在ngModel绑定中的值,而不是您假设的option元素的value属性 .option元素的value属性由angular设置为
array
中关联项的索引(如果您检查plunker示例中的select元素,可以看到) .EDIT :
您可以将
ng-options
视为foreach
循环 . 由于networks
是这种情况下的字符串数组,net
只是成为数组中的每个字符串项 .如果网络是一个对象数组,情况会有所不同 . 鉴于
networks
看起来像这样:net
将成为数组中的每个对象 . 在这种情况下,您可以使用表达式net.name for net in networks
来显示网络的名称,但是为ngModel绑定network
对象本身的值 . 如果您想使用id
作为值,则可以使用表达式net.id as net.name for net in networks
. 请参阅更新的代码here .