尝试致电时出现此错误
function MyCtrl1($scope, $location, $rootScope) { $scope.$on('$locationChangeStart', function (event, next, current) { event.preventDefault(); var answer = confirm("Are you sure you want to leave this page?"); if (answer) { $location.url($location.url(next).hash()); $rootScope.$apply(); } }); } MyCtrl1.$inject = ['$scope', '$location', '$rootScope'];
错误是
Error: $digest already in progress
复制: 防止在调用$ scope。$ apply()时发生错误$digest。 您收到的错误表明Angular的脏检查已经在进行中。
最新的最佳实践表明,$timeout如果要在下一个 摘要 迭代中执行任何代码,则应使用:
$timeout
$timeout(function() { // the code you want to run in the next digest });
上一页反应: (不要使用此方法)
使用安全的申请,例如:
$rootScope.$$phase || $rootScope.$apply();
你为什么不反转条件?
$scope.$on('$locationChangeStart', function (event, next, current) { if (confirm("Are you sure you want to leave this page?")) { event.preventDefault(); } });