点击角度ui bootstrap模式时如何捕捉背景点击事件?

19 javascript angularjs angular-ui-bootstrap

在我的应用程序中,它使用$modal.open()函数打开一个模式弹出窗口,它使用另一个页面作为模板.单击按钮时,它显示模态弹出窗口正常.如果我单击取消按钮然后它正在调用此功能并且也正常工作.

    $scope.cancel=function(){
    });
Run Code Online (Sandbox Code Playgroud)

但是如果用户在模态弹出窗口外单击,我们就无法通过此代码捕获该事件

    $scope.dismiss=function(){
    });
Run Code Online (Sandbox Code Playgroud)

我怎么抓住那个事件?

我见过AngularJS的很多文章,但找不到解决方案.

PSL*_*PSL 32

$modal.open()返回带有promise的对象.您可以使用promise并链接它,并在catch中处理它.当您点击外面的背景时,它会在dismiss内部执行,并拒绝承诺.

例如: -

var instance = $modal.open(...);

 instance.result.then(function(){
  //Get triggers when modal is closed
 }, function(){
  //gets triggers when modal is dismissed.
 });
Run Code Online (Sandbox Code Playgroud)

如果您在$modalInstance注射的孩子中使用它,您也可以在那里注射.所以基本上而不是处理event这个有助于你在承诺的帮助下在更高的层次上做到这一点.


Tav*_*usi 8

您可以使用

backdrop: 'static'
Run Code Online (Sandbox Code Playgroud)

在你的选择中.像这样:

var modalInstance = $modal.open({
    templateUrl: 'myModalContent.html',
    controller: 'ModalInstanceCtrl',
    backdrop: 'static',
    ...
});
Run Code Online (Sandbox Code Playgroud)

引导3.0文档解释说,backdrop: 'static'指定了不解雇点击模态的背景.