调试$ rootScope:infdig

Mar*_*son 13 angularjs

这是一个常见问题:

达到$ $ digest()迭代次数.中止!
观察者在最近5次迭代中被解雇:[]

文档(https://docs.angularjs.org/error/ $ rootScope/infdig)解释了不采取哪些措施来避免这种情况.

然而,偶尔,你最终会陷入困境.对于比玩具应用程序更大的项目,找到无限消化循环的原因可能非常困难.

我正在寻找关于如何找出导致循环的代码所在位置的调试提示.

Ste*_*rov 11

问题已在这里得到解答 - 如何解决Angular"10 $ digest()迭代达到"错误

作为两个最佳答案的简历:

  1. 删除所有可疑HTML - 基本上从模板中删除所有html,并检查是否没有警告(/sf/answers/1199049211/)
  2. 通常在函数返回新对象时发生(/sf/answers/1198142571/)

你可以随时把条件断点这里https://github.com/angular/angular.js/blob/c3220325a0a95484724a03bedca24e1bbf05dc80/src/ng/rootScope.js#L815检查异常堆栈跟踪.


Sha*_*wal 2

其原因可能有多种。我遇到的常见原因之一是由于 中的过滤器ng-repeat返回一个新数组以在ng-repeat.

因此,请检查ng-repeat具有正在修改数组的关联过滤器的表达式。