这是一个常见问题:
达到5 $ digest()次迭代。中止!
观察者在最近5次迭代中被解雇:[]
文档(https://docs.angularjs.org/error/ $ rootScope / infdig)解释了如何避免这种情况。
然而,偶尔,你最终会遇到这种情况。对于比玩具应用更大的项目,找到无限消化循环的原因可能非常困难。
我正在寻找有关如何找出导致循环的代码位置的调试提示。
答案 0 :(得分:7)
问题已在此处得到解答 - How to Troubleshoot Angular "10 $digest() iterations reached" Error
作为两个最佳答案的简历:
加
您始终可以在此处使用条件断点 https://github.com/angular/angular.js/blob/c3220325a0a95484724a03bedca24e1bbf05dc80/src/ng/rootScope.js#L815来检查异常堆栈跟踪。
答案 1 :(得分:2)
可能有多种原因。我遇到的一个常见原因是ng-repeat
中的过滤器会返回一个新数组,以便在ng-repeat
上运行。
请检查您的ng-repeat
表达式,这些表达式具有正在修改数组的关联过滤器。
答案 2 :(得分:0)
对我来说,错误发生在更改网址的方法中:
self.setURL = function(item) {
var mainUrl = window.location.origin + '#/' + self.baseUrl;
if (item) {
mainUrl += item.testId;
}
$location.$$absUrl = mainUrl;
};
导致$rootScope:infdig
错误
因此,在调试时,检查当前控制器/指令
中更改你的ur,location,hrefs的内容答案 3 :(得分:0)
对我来说,错误发生在更改网址的方法中:
> self.setURL = function(item) {
>
>
>//Ajax call followed by promise function
> servicejsfile.somefunctiom(transferObj).then(responce){
>
> var somethingTrue=responce.featureAvailable;
>if (somethingTrue) {
> dothis();
>}else
> $window.location = newlocation;
> };
这更改了我应用程序URL的最后一部分。 这导致了$ rootScope:infdig错误
因此,在调试时,我注释掉了这一部分,并且没有重复错误,并且对应用程序的要求也发生了变化。
我无法解决此问题,因此我们的要求保持不变,我可以更改位置。
此问题的发生是通过控制器功能内部的一些 Ajax调用而发生的,并且仅在IE中:对于FF,chrome和safari,它表现得很完美,因为这些浏览器的JavaScript引擎速度更快。