我可以在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已经在进行中。