我有一種形式的離子視圖。當有人試圖離開視圖(在我的情況下,通過選擇一個菜單項),事件會觸發,並將其捕獲到我的控制器中。到現在爲止還挺好。
在$ionicView.beforeLeave
事件處理程序中,我將檢查表單中的數據並將其提交給服務器。如果數據不正確,我想告訴用戶,並讓他們離開表單視圖,以便他們必須糾正錯誤。
我無法解決如何停止發生的視圖更改,以便用戶停留在我的表單視圖上。
有沒有辦法做到這一點?如果是這樣如何?
我有一種形式的離子視圖。當有人試圖離開視圖(在我的情況下,通過選擇一個菜單項),事件會觸發,並將其捕獲到我的控制器中。到現在爲止還挺好。
在$ionicView.beforeLeave
事件處理程序中,我將檢查表單中的數據並將其提交給服務器。如果數據不正確,我想告訴用戶,並讓他們離開表單視圖,以便他們必須糾正錯誤。
我無法解決如何停止發生的視圖更改,以便用戶停留在我的表單視圖上。
有沒有辦法做到這一點?如果是這樣如何?
$ionicView.beforeLeave
應該是「可取消」但它不起作用。
你可以做這樣的事情,有可能:
$scope.$on('$ionicView.beforeLeave', function (event) {
event.preventDefault();
});
,但有這,顯然,還沒有固定的問題open。 你在這裏唯一的選擇是取消事件在UI-RUOTE:
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
});
您可以通過添加到這個控制器完成它:
$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.3.1不行。 – site