2

我抓住modal.hidden了事件,并对其进行了一些检查。当检查为false时,我想防止模态隐藏。我用e.preventDefault(). 但它不起作用。

我的代码和CodePen

$scope.$on('modal.hidden', function(event) {
    var isPassed = false;
    // do some check
    if (isPassed == false) {
        event.preventDefault();
    }  
});
4

1 回答 1

12

您可以在设置模式时使用backdropClickToCloseand选项,也可以隐藏后退按钮。hardwareBackButtonClose这将防止模态被关闭:

// Load the modal from the given template URL
$scope.modal = {};
$ionicModal.fromTemplateUrl('my-modal.html', {
    scope: $scope,
    animation: 'slide-in-up',
    backdropClickToClose: false,
    hardwareBackButtonClose: false
}).then(function(modal) {
    $scope.modal = modal;
});

然后,您可以进行一些检查并true再次将这些值设置为,并显示后退按钮。这仍然是用户友好的,用户可以以适当的方式关闭模式。

function checkSomething(){
    // The timeout is only to demonstrate, do your check here
    $timeout(function(){
      console.log("Now user can close modal")
      $scope.isPassed = true;
      $scope.modal.backdropClickToClose = true;
      $scope.modal.hardwareBackButtonClose = true;
    }, 3000)
}

在这里更新了codepen

于 2015-07-04T17:35:49.333 回答