我知道 AngularJS 在 ng-repeat 上设置了一些监视。此时设置的是什么类型的 watch ?
另外,有人可以解释在每种情况下会发生什么吗?我想知道如果我有很多项目,那么用户不会被 watch 所困扰,如果我以其他方式编写它,这些 watch 可能会被淘汰。
一
<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>
最佳答案
每个ng-repeat
将在 items
上设置 $watch . (如果你看 ng-repeat source code ,大部分是 $watch 方法的 watchExpression 函数)。每次一个 Angular digest cycle运行,每个 item
在 items
将通过此 watch 功能进行检查。 (请注意,在一个摘要循环中,可以多次调用此监视函数)。
每个{{}}
设置 $watch。如果类似 item.property
在 {{}} 内,每个摘要周期至少检查一次脏检查。
如果函数在 {{}} 内,则每个摘要周期至少调用一次该函数。
我不确定 x | filter
,但是 this fiddle似乎表明每个摘要周期至少调用一次过滤器,即使 x
不会改变。
关于angularjs - AngularJS 如何在 ng-repeat 中 $watch 这些案例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646304/