理解ng-repeat中的角度环

时间:2015-10-25 10:03:01

标签: angularjs

我刚刚通过这个在线观看$ 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 ,有一些类似的例子,但没有完全相同,我对这种语法感到困惑,有人可以解释一下吗?

谢谢。

3 个答案:

答案 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;作为我的选择的价值。