angularjs:知道这个错误意味着什么吗?

时间:2015-07-09 06:48:11

标签: angularjs angularjs-watch

您好我收到此错误:

  

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 Infinite $ digest循环

     

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

我很难认识到这个问题,观察者或者为什么突然发生错误。它在昨天之前工作正常。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

<强>描述 当应用程序的模型变得不稳定并且每个$摘要周期触发状态更改和随后的$摘要周期时,会发生此错误。 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