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

Bra*_*ord 8 angularjs

据我所知,AngularJS在ng-repeat上设置了一些手表.此时设置了什么类型的手表?

此外,有人可以解释在每种情况下会发生什么?我想知道,如果我有很多物品,那么用户不会因为我以其他方式编写而被淘汰的手表陷入困境.

<div ng-repeat="item in items">
  <div>{{item.property}}</div>
</div>
Run Code Online (Sandbox Code Playgroud)

<div ng-repeat="item in items">
  <div>{{item.property | myFormatter}}</div>
</div>
Run Code Online (Sandbox Code Playgroud)

<div ng-repeat="item in items">
  <div>{{format(item.property)}}</div>
</div>
Run Code Online (Sandbox Code Playgroud)

<div ng-repeat="item in items">
  <div>{{item.something()}}</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Mar*_*cok 7

每个人ng-repeat都会设置$ watch items.(如果你看一下ng-repeat源代码,大部分都是$ watch方法的watchExpression函数).每次运行Angular 摘要循环时,每个itemin items将由此监视功能检查.(请注意,在摘要周期中,可以多次调用此监视功能).

每个都{{}}设置一个$ watch.如果类似于item.property{{}}内的内容,则每个摘要周期至少检查一次.

如果函数在{{}} s内,则每个摘要周期至少调用一次该函数.

我不确定x | filter,但这个小提琴似乎表明每个摘要周期至少调用一次过滤器,即使x没有改变.

  • 这对于`x |来说很疯狂 filter`.我不明白为什么会这样.也许他们认为过滤器不会是一个纯函数? (5认同)
  • 我也很惊讶. (2认同)