如何防止Angular-UI bootstrap模式关闭?

时间:2015-10-06 09:22:22

标签: angularjs modal-dialog angular-ui

我有$modalInstance。我可以在承诺的帮助下收到关闭事件通知:

$modalInstance.result.finally(function() {
  // code here
});

但是如果用户误将模型关闭,我不知道如何阻止关闭。我想询问用户是否真的要关闭模型并关闭它,如果他的话。我仍然不想启用backdrop: 'static'

$modal.open({
  ... // other options
  backdrop : 'static'
});

谢谢。

1 个答案:

答案 0 :(得分:2)

我做了更多的研究,我发现another question与此类似,这就是在这个问题上找到的答案(随意给他+1,而不是我)

    $scope.$on('modal.closing', function(event, reason, closed) {
    var r = prompt("Are you sure you wanna close the modal? (Enter 'YES' to close)");

    if (r !== 'YES') {
        event.preventDefault();
    }
});

将它放在模态控制器内。

这不是您搜索的内容,如果您尝试关闭模式,通过关闭(单击外部模式),取消或确定按钮,这将提示您。您可以尝试修改它以满足您的需求。

更新:添加简单的if else检查以查看点击的内容,如果点击了背景,则提示用户:

    $scope.$on('modal.closing', function(event, reason, closed) {

    if (reason == 'ok' || reason == 'cancel'){
        console.log('closed');
    } else {
        // this is if 'reason' == 'backdrop click' 
        var r = prompt("Are you sure you wanna close the modal? (Enter 'YES' to close)");

        if (r !== 'YES') {
            event.preventDefault();
        }
    }
});

您认为此解决方案是否足够?