我有一个带有表格的离子视图。当有人试图离开视图时(在我的情况下通过选择菜单项),$ionicView.beforeLeave
事件会触发,我会在控制器中捕获它。到目前为止一切都很好。
在$ionicView.beforeLeave
事件处理程序中,我将检查表单中的数据并将其提交给服务器。如果数据不正确,我想告诉用户并阻止他们离开表单视图,这样他们就必须纠正错误。
我无法弄清楚如何停止更改视图,以便用户保持在表单视图中。
有办法做到这一点吗?如果是这样的话?
答案 0 :(得分:1)
您可以通过将其添加到控制器中来完成它:
$scope.$on("$stateChangeStart", function(event){
if($scope.shouldIStayOrShouldIGo=='stay') {
event.preventDefault();
}
});
确认弹出窗口的示例
var go=false;
$scope.$on("$stateChangeStart", function(event, toState){
if(go===false) {
event.preventDefault();
$ionicPopup.confirm({
title:'Are you sure you want to go?',
cancelText:'No, stay',
okText:'Yes, go'
}).then(function(result) {
if(result) {
go=true;
$state.go(toState);
}
});
}
});
答案 1 :(得分:0)
$ionicView.beforeLeave
应该是“可取消的”,但不起作用。
你可以这样做,可能:
$scope.$on('$ionicView.beforeLeave', function (event) {
event.preventDefault();
});
但是有一个问题open,显然还没有解决。 你在这里唯一的选择是取消ui-ruote中的事件:
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
});