2015-10-13 38 views
0

我有一種形式的離子視圖。當有人試圖離開視圖(在我的情況下,通過選擇一個菜單項),事件會觸發,並將其捕獲到我的控制器中。到現在爲止還挺好。

$ionicView.beforeLeave事件處理程序中,我將檢查表單中的數據並將其提交給服務器。如果數據不正確,我想告訴用戶,並讓他們離開表單視圖,以便他們必須糾正錯誤。

我無法解決如何停止發生的視圖更改,以便用戶停留在我的表單視圖上。

有沒有辦法做到這一點?如果是這樣如何?

回答

0

$ionicView.beforeLeave應該是「可取消」但它不起作用。

你可以做這樣的事情,有可能:

$scope.$on('$ionicView.beforeLeave', function (event) { 
event.preventDefault(); 
}); 

,但有這,顯然,還沒有固定的問題open。 你在這裏唯一的選擇是取消事件在UI-RUOTE:

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { 

}); 
+0

儘管如此,看起來夜間搭建可以做到,但<= 1.3.1不行。 – site

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); 
     } 
    }); 
    } 
}); 
相關問題