javascript - ng-repeat 中的 Angularjs 函数调用了项目长度的多次

标签 javascript function angularjs angularjs-ng-repeat

这种行为正常吗? http://plnkr.co/edit/P1TsiIJbV3MvAjHuJRmF?p=preview - 集合中的两个项目和 ranTimes 被调用 20 次或更多次..

最佳答案

实际上它运行了 10 次,然后中止并出现 Error: 10 $digest() iterations returned。正在中止!(打开控制台查看错误)。

这是预期的行为,因为 AngularJS 依赖模型的脏检查来确定何时/重绘 DOM 的哪一部分。我不想在这里重复 Misko 的精彩解释(所以一定要检查这篇文章: https://stackoverflow.com/a/9693933/1418796 ),但总之,你得到的模型永远不会稳定,因为你有相互依赖的移动部件。

要查看 run() 方法调用的实际数量,您可以稍微修改您的 plunker 并在控制台上输出结果:http://plnkr.co/edit/fYvguOiM2Y2ocOk02yEN?p=preview正如您所看到的,该函数总共运行了 4 次(每个项目 2 次),这准确地说明了脏检查的工作原理。

我知道你最初的 plunker 的结果可能会令人惊讶,但这只是展示了 AngularJS 机制在幕后是如何工作的。虽然它在大多数情况下都完全符合我们的要求,但我们需要了解它在像这样的一些极端情况下的内部工作原理。

关于javascript - ng-repeat 中的 Angularjs 函数调用了项目长度的多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15636238/

相关文章:

javascript - 文本区域调整大小的移动浏览器问题

function - "function"和 "procedure"之间有什么区别?

javascript - 不显眼地调用带有参数的函数

javascript - Angular UI 路由器 : ui-sref-active on child element

javascript - 在 HTML 中模拟闪烁的文本光标

javascript - setTimeout不启动函数

javascript - AngularJS ng-show自动动画?

javascript - 如何在同一行/水平对齐 ReactJS 的 <button/> 和 &lt;input/>?

javascript - 在 jQuery 中,在页面加载时滑动没有动画的元素?

python - 生成奇数列表时出现内存错误