Angularjs 调试$rootScope:infdig
这是一个常见的问题: 已达到5$digest()迭代次数。流产Angularjs 调试$rootScope:infdig,angularjs,Angularjs,这是一个常见的问题: 已达到5$digest()迭代次数。流产 在过去5次迭代中激发的观察者:[] 文档($rootScope/infdig)解释了避免这种情况不应该做的事情 然而,偶尔,你也会陷入这样的境地。对于一个比玩具应用程序更大的项目来说,找到无限摘要循环的原因是非常困难的 我正在寻找调试提示,说明如何找出导致循环的代码所在的位置。可能有多种原因。我遇到的一个常见原因是ng repeat中有一个过滤器,它返回一个新数组来处理ng repeat 因此,请检查您的ng repeat表达式,这
在过去5次迭代中激发的观察者:[] 文档($rootScope/infdig)解释了避免这种情况不应该做的事情 然而,偶尔,你也会陷入这样的境地。对于一个比玩具应用程序更大的项目来说,找到无限摘要循环的原因是非常困难的
我正在寻找调试提示,说明如何找出导致循环的代码所在的位置。可能有多种原因。我遇到的一个常见原因是
ng repeat
中有一个过滤器,它返回一个新数组来处理ng repeat
因此,请检查您的
ng repeat
表达式,这些表达式具有修改数组的关联筛选器。问题已在此处得到回答-
作为两个最佳答案的简历:
您始终可以在此处放置条件断点来检查异常stacktrace。对于我来说,更改url的方法中发生了错误:
self.setURL = function(item) {
var mainUrl = window.location.origin + '#/' + self.baseUrl;
if (item) {
mainUrl += item.testId;
}
$location.$$absUrl = mainUrl;
};
> 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;
> };
这导致了$rootScope:infdig
错误
因此,在调试此检查时,无论您当前控制器/指令中的ur、位置、HREF发生了什么变化,我都认为错误发生在更改url的方法中:
self.setURL = function(item) {
var mainUrl = window.location.origin + '#/' + self.baseUrl;
if (item) {
mainUrl += item.testId;
}
$location.$$absUrl = mainUrl;
};
> 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引擎对于这些浏览器来说速度更快。在我的例子中,问题是根本没有无限循环,因为我确保始终返回相同的对象引用。我已经详细介绍了如何在中调试它。但这种情况很少见。。。