我刚刚通过这个在线观看$ watch的示例,基本上遇到了以下奇怪的语法:
<select ng-model="countSelection" ng-options="n for n in [5,10,15,20]"></select>
现在我熟悉原生javascript中的for ..in
循环,但到底是什么ng-options="n for n in [5,10,15,20]"
?任何人都能解释一下吗?我看过文档 HERE ,有一些类似的例子,但没有完全相同,我对这种语法感到困惑,有人可以解释一下吗?
谢谢。
答案 0 :(得分:1)
基本上它不是JavaScript,它是一个特定于AngularJS的重复表达式。这是文档中的定义:
表示如何枚举集合的表达式。
重复表达式有多种格式。 AngularJS编译器能够解析它们并为循环范围提供变量。
答案 1 :(得分:0)
一个原因是它可以很容易地用于基于特定键迭代对象数组。假设您有以下数据:
$scope.arr = [
{'key1': 1, 'key2': 4},
{'key1': 2, 'key2': 5}
]
现在,在您的标记中,您可以迭代key1
:
<select ng-model="temp" ng-options="n.key1 for n in arr">
</select>
或key2
<select ng-model="temp" ng-options="n.key2 for n in arr">
</select>
这可确保您的ng-model
保留正确的键值。
答案 2 :(得分:0)
是的,针对下拉列表的ngOptions有棘手且具体的实现,实际上,它已记录在案here。
长话短说:你有一个数组,你应该告诉Angular它应该传递什么作为这些选项的值。 例如,您有对象数组:
myArr = [{id:1, description:'First'}, {id:2, description:'Second'}, ...]
因此,如果您想使用字段ID作为选择选项的值,则可以创建以下选择:
<select ng-model="countSelection" ng-options="obj.id for obj in myArr"></select>
那就是它!在您的情况下,您有数组,并且您希望将此数字用作选项的值。因此,我们可以在[5,10,15,20]&#34; 中将此行 ng-options =&#34; n转换为n,如下所示:
请取出数组中的每个元素,并将其称为&#39; n&#39;。请使用这个&#39; n&#39;作为我的选择的价值。