我已经在$ionicView.beforeLeave
事件处理程序中编写了代码。但似乎没有效果。因为当这个事件发生时,页面已被移动,因此弹出确认对话框为时已晚。我不知道如何防止此事件的默认行为。我试过event.preventDefault()
,但它没用。有人可以帮帮我吗?提前谢谢!
$rootScope.$on("$ionicView.beforeLeave", function (event, view) {
$ionicPopup.confirm({
title: "Confirm",
template: "Data has been modified. Are you sure to discard the changes and leave anyway?"
}).then(function (res) {
res || event.preventDefault();
});
});
答案 0 :(得分:0)
如果您使用的是默认的ui-router,那么选项就是$stateChangeStart
事件的subcibe。
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
// Navigation will be prevented
if (!some_check_variable) {
event.preventDefault();
}
});
您可以在此处阅读有关ui-router文档的更多信息:https://github.com/angular-ui/ui-Router/wiki
检查stateChangeStart部分