错误:$ rootScope:infdig Infinite $ digest循环

时间:2016-10-13 09:44:47

标签: angularjs git

我和一位朋友一起工作的是除了master之外的git分支,名为userSummary。今天早上,我的朋友在做了一些更改之后将分支与master合并,但没有删除userSummary分支。我将我的分支从userSummary更改为master并对master进行了拉动。 现在我的网络应用程序显示一些根范围错误。而且它表现得很奇怪。错误是

Error: [$rootScope:infdig] http://errors.angularjs.org/1.4.8/$rootScope/infdig?p0=10&p1=%5B%5B%7B%22ms…2%2C%22oldVal%22%3A%22%5C%222016-10-13T09%3A31%3A36.003Z%5C%22%22%7D%5D%5D  

很长一段时间以来,我一直在努力。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:-1)

docs中所示:

当应用程序的模型变得不稳定并且每个$digest周期触发状态更改和后续$digest周期时,会发生此错误。 Angular检测到这种情况并防止无限循环导致浏览器无响应。

例如,可以通过在路径上设置监视并随后在值更改时更新相同路径来实现这种情况。

$scope.$watch('foo', function() {
  $scope.foo = $scope.foo + 1;
});

一个常见错误是绑定到每次调用时生成新数组的函数。例如:

<div ng-repeat="user in getUsers()">{{ user.name }}</div>

...

$scope.getUsers = function() {
  return [ { name: 'Hank' }, { name: 'Francisco' } ];
};

由于getUsers()返回一个新数组,因此Angular确定每个$ digest周期的模型不同,从而导致错误。如果元素没有改变,解决方案是返回相同的数组对象:

var users = [ { name: 'Hank' }, { name: 'Francisco' } ];

$scope.getUsers = function() {
  return users;
};

$digest周期允许的最大迭代次数由TTL设置控制,可通过$rootScopeProvider进行配置。