angularjs - AngularJS 如何在 ng-repeat 中 $watch 这些案例?

标签 angularjs

我知道 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运行,每个 itemitems将通过此 watch 功能进行检查。 (请注意,在一个摘要循环中,可以多次调用此监视函数)。

每个{{}}设置 $watch。如果类似 item.property在 {{}} 内,每个摘要周期至少检查一次脏检查。

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

我不确定 x | filter ,但是 this fiddle似乎表明每个摘要周期至少调用一次过滤器,即使 x不会改变。

关于angularjs - AngularJS 如何在 ng-repeat 中 $watch 这些案例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646304/

相关文章:

javascript - AngularsJS JavaScript 匹配单词和添加字符串

javascript - 在具有单独作用域的其他指令内使用 ng-if

javascript - 来自终端的 npm install 错误

javascript - Angularjs 切换 div 可见性

php - 通过 Slim PHP 和 AngularJS 检索 GET 命令

angularjs - 找不到本地 Npm 模块 "grunt-legacy-util"。安装了吗?

javascript - Angular 模型失去了 ng-included 在指令中的范围

javascript - Angular UIRouter 解析未知的提供者

angularjs - 更改所选 ng-repeat 项的样式并删除其他项的样式

javascript - 获取 a.foreach 不是函数错误