我試着做在我的控制器以下幾點:angularjs:防止路由變化
$scope.$on("$routeChangeStart", function (event, next, current) {
if (!confirm('are you sure ?')) {
event.preventDefault();
}
});
但它不工作。這不應該是這樣做的方式嗎?
我試着做在我的控制器以下幾點:angularjs:防止路由變化
$scope.$on("$routeChangeStart", function (event, next, current) {
if (!confirm('are you sure ?')) {
event.preventDefault();
}
});
但它不工作。這不應該是這樣做的方式嗎?
我結束了使用ui-router
,所以我做的方式是:
$scope.$on('$stateChangeStart', function (event) {
if (!confirm('are you sure ?')) {
event.preventDefault();
}
});
和它的作品。
我會在你的鏈接上加一條指令,在更改路由之前應該確認。 我剛剛在JSFiddle中創建了它,我沒有測試它。但我認爲,這應該是正確的方式。
(function (angular) {
module = angular.module('confirm', []);
ConfirmDirective = function() {
return {
restrict: 'A',
link: function (scope, elm, attrs, ctrls) {
angular.element(elm).bind('click', function (event) {
alert("Sure?");
event.preventDefault();
return false; //or true, depends on you
});
}
};
};
module.directive("confirm", ConfirmDirective);
}(angular));
檢查和嘗試。
問候
這很好,但它不是我要找的。我需要觀察路線變化。這包括用戶何時點擊瀏覽器的後退按鈕。 – Sam 2013-04-25 11:45:37
您可能還想要捕獲所有路線更改,並且向每條鏈接添加確認並不是最好的方式。 – andersonvom 2013-05-29 17:39:36
你在做什麼?你可以發佈一個jsfiddle嗎?您可能想要在$ rootScope上執行此操作。我建議把它放在你的應用程序引導程序本身的位置。發佈一個jsFiddle,我會盡力爲你解決它。 – 2013-10-14 17:58:20
不錯,但我最終使用UI路由器,所以我不得不使用$ stateChangeStart,而只是工作。 – Sam 2013-10-14 18:31:57