首页 文章

AngularJS,ng-options

提问于
浏览
0

我研究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 回答

  • 1

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

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

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

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

    EDIT

    您可以将 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 .

相关问题