0

嗨,我收到此错误:

https://docs.angularjs.org/error/ $rootScope/infdig?p0=10&p1=%5B%5B%22fn:%20parentValueWatch;%20newVal:%201;%20oldVal:%20undefined%22,%22inputValue;%20newVal :%201;%20oldVal:%20undefined%22%5D,%5B%22fn:%20parentValueWatch;%20newVal:%20undefined;%20oldVal:%201%22,%22inputValue;%20newVal:%20undefined;%20oldVal:%201 %22%5D,%5B%22fn:%20parentValueWatch;%20newVal:%201;%20oldVal:%20undefined%22,%22inputValue;%20newVal:%201;%20oldVal:%20undefined%22%5D,%5B%22fn :%20parentValueWatch;%20newVal:%20undefined;%20oldVal:%201%22,%22inputValue;%20newVal:%20undefined;%20oldVal:%201%22%5D,%5B%22fn:%20parentValueWatch;%20newVal:%201 ;%20oldVal:%20undefined%22,%22inputValue;%20newVal:%201;%20oldVal:%20undefined%22%5D%5D

错误:$rootScope:infdig 无限 $digest 循环

达到 10 次 $digest() 迭代。中止!在最后 5 次迭代中触发的观察者:[["fn: parentValueWatch; newVal: 1; oldVal: undefined","inputValue; newVal: 1; oldVal: undefined"],["fn: parentValueWatch; newVal: undefined; oldVal: 1 ","inputValue; newVal: undefined; oldVal: 1"],["fn: parentValueWatch; newVal: 1; oldVal: undefined","inputValue; newVal: 1; oldVal: undefined"],["fn: parentValueWatch; newVal : 未定义; oldVal: 1","inputValue; newVal: 未定义; oldVal: 1"],["fn: parentValueWatch; newVal: 1; oldVal: 未定义","inputValue; newVal: 1; oldVal: 未定义"]]

我很难认识到这个问题是哪个观察者或为什么突然抛出错误。昨天之前它工作正常。

任何帮助深表感谢。

4

1 回答 1

4

描述 当应用程序的模型变得不稳定并且每个 $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.

访问以获取更多信息https://docs.angularjs.org/error/$rootScope/infdig

于 2015-07-09T06:54:21.757 回答