[$rootScope:infdig]或[$rootScope:inprog]在angular中的意思是什么?

what [$rootScope:infdig] or [$rootScope:inprog] in angular mean?

本文关键字:rootScope 意思是 意思 是什么 inprog infdig angular      更新时间:2023-09-26

我可以在IE 10控制台上看到下面的错误,我使用的是angular v1.3.4。当我从一个页面导航到另一个页面时,会出现这个错误。

Error: [$rootScope:infdig] http://errors.angularjs.org/1.3.4/$rootScope/infdig?p0=10&p1=%5B%5B%7B%22msg%22%3A%22fn%3A%20function(a)%7Bvar%20b%3De(a)%3 .... long string which goes on
   at $digest (http://localhost:9080/WeBoM/js/libs/angular.min.js:123:176)
   at $apply (http://localhost:9080/WeBoM/js/libs/angular.min.js:125:305)
   at m (http://localhost:9080/WeBoM/js/libs/angular.min.js:80:453)
   at N (http://localhost:9080/WeBoM/js/libs/angular.min.js:85:32)
   at onload (http://localhost:9080/WeBoM/js/libs/angular.min.js:86:69)

,之后是

Error: [$rootScope:inprog] http://errors.angularjs.org/1.3.4/$rootScope/inprog?p0=%24apply
   at l (http://localhost:9080/WeBoM/js/libs/angular.min.js:117:213)
   at $apply (http://localhost:9080/WeBoM/js/libs/angular.min.js:125:231)
   at Anonymous function (http://localhost:9080/WeBoM/js/libs/angular.min.js:227:245)
   at handle (http://localhost:9080/WeBoM/js/libs/jquery.min.js:3:12506)
   at dispatch (http://localhost:9080/WeBoM/js/libs/jquery.min.js:3:8493)
   at handle (http://localhost:9080/WeBoM/js/libs/jquery.min.js:3:5177)

如果使用$scope.$apply();

所以无论在哪里使用它,你都需要在scope.apply调用前检查!$scope.$$phase这样的条件

if(!$scope.$$phase)
{
$scope.$apply();
}

但是不要这样做if (!$scope.$$phase) $scope.$apply(),这意味着你的$scope.$apply()在调用堆栈中不够高。

我的回答只是简短的解决方案,你可以在这个讨论下面查看更多的解决方案AngularJS:当调用$scope时,防止错误$digest已经在进行中。