问题 调试$ rootScope:infdig


这是一个常见问题:

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

文件(https://docs.angularjs.org/error/$ rootScope / infdig)解释了什么不能避免这种情况。

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

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


8654
2017-09-24 08:14


起源



答案:


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

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

  1. 删除所有可疑的HTML  - 基本上从模板中删除所有html,并检查是否没有警告(https://stackoverflow.com/a/17129274/274500
  2. 通常它发生在 function返回一个新对象 (https://stackoverflow.com/a/17116322/274500

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


7
2017-08-15 14:14



在我的情况下,问题是根本没有无限循环,因为我确保始终返回相同的对象引用。我已经详细介绍了如何调试它 关于相关问题的答案。这个案子很少见...... - H.B.


答案:


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

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

  1. 删除所有可疑的HTML  - 基本上从模板中删除所有html,并检查是否没有警告(https://stackoverflow.com/a/17129274/274500
  2. 通常它发生在 function返回一个新对象 (https://stackoverflow.com/a/17116322/274500

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


7
2017-08-15 14:14



在我的情况下,问题是根本没有无限循环,因为我确保始终返回相同的对象引用。我已经详细介绍了如何调试它 关于相关问题的答案。这个案子很少见...... - H.B.


可能有多种原因。我遇到的一个常见原因是由于过滤器 ng-repeat 它返回一个新的数组来处理 ng-repeat

所以检查你的 ng-repeat 具有关联过滤器的表达式,用于修改数组。


2
2017-08-13 06:10





对我来说,错误发生在更改网址的方法中:

  self.setURL = function(item) {
    var mainUrl = window.location.origin + '#/' + self.baseUrl;
    if (item) {
      mainUrl += item.testId;
    }
    $location.$$absUrl = mainUrl;
  };

这导致了 $rootScope:infdig 错误

因此,当调试此检查时,检查当前控制器/指令中的ur,location,hrefs是什么


0
2018-01-04 10:33