AngularJS $如何在ng-repeat中观察这些情况?

时间:2013-03-26 20:00:55

标签: angularjs

据我所知,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>

1 个答案:

答案 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没有变化。