電話をかけるときにこのエラーが発生します
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
ベストアンサー1
重複:$scope.$apply() を呼び出すときにエラー $digest がすでに進行中になるのを防ぎます。
発生したエラーは、Angular のダーティ チェックがすでに進行中であることを意味します。
最近のベストプラクティスでは、$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();
}
});