据我所知,AngularJS在ng-repeat上设置了一些手表。此时设置了什么类型的手表?
此外,有人可以解释在每种情况下会发生什么?我想知道,如果我有很多物品,那么用户不会因为我以其他方式写过而被淘汰的手表陷入困境。
一
<div ng-repeat="item in items">
<div>{{item.property}}</div>
</div>
两个
<div ng-repeat="item in items">
<div>{{item.property | myFormatter}}</div>
</div>
三
<div ng-repeat="item in items">
<div>{{format(item.property)}}</div>
</div>
四
<div ng-repeat="item in items">
<div>{{item.something()}}</div>
</div>
答案 0 :(得分:7)
每个ng-repeat
都会在items
上设置$ watch。 (如果你看一下ng-repeat source code,大部分都是$ watch方法的watchExpression函数。每次Angular digest cycle运行时,item
中的每个items
都将由此监视功能进行检查。 (请注意,在摘要周期中,可以多次调用此监视功能。)
每个{{}}
设置$ watch。如果{{}}}内有类似item.property
的内容,则每个摘要周期至少检查一次。
如果函数在{{}} s内,那么每个摘要周期至少调用一次该函数。
我不确定x | filter
,但this fiddle似乎表示每个摘要周期至少调用一次过滤器,即使x
没有变化。