模态关闭后捕获Angular Bootstrap UI $ uibModal关闭事件

Avn*_*ann 12 javascript modal-dialog angularjs angular-ui-bootstrap angular-ui-modal

我正在使用来自另一个控制器的$ uibModal.open打开一个模态窗口,并且需要在模态窗口完全关闭时通知(而不是在关闭期间...)所以我将能够运行一个函数.

打开模态的代码如下:

var modalInstance = $uibModal.open({
  templateUrl: "myModalContent.html",
  controller: "termModalCtrl",
  windowClass: 'app-modal-window',
  resolve: {
    'params': function () { return id }
  }
});
Run Code Online (Sandbox Code Playgroud)

我看到了一些建议的解决方案:

modalInstance.result.then(function(result) {
});
Run Code Online (Sandbox Code Playgroud)

问题是在实际关闭模态窗口之前调用函数回调(当模态窗口仍然打开时),这不是我想要的行为,因为它意味着它捕获"关闭"事件而不是"封闭的"模态事件".

有一个简洁明了的方法来实现这个吗?如果没有,我会感到惊讶,因为这种行为在地球上的任何UI框架中都很常见......

请帮忙!

Sri*_*ith 26

试试这个.

.open方法返回一个可以链接的promise,.closed它是.open方法的许多属性之一.

我对它进行了测试,它仅在模态关闭后显示警报,而不是在"关闭"时显示.

请参阅此处 " 返回"部分下的"已关闭"

var modalInstance = $uibModal.open({
    templateUrl: "myModalContent.html",
    controller: "termModalCtrl",
    windowClass: 'app-modal-window',
    resolve: {
        'params': function () { return id }
    }
}).closed.then(function(){
  window.alert('Modal closed');
});
Run Code Online (Sandbox Code Playgroud)

这里是plunker http://plnkr.co/edit/yB3k8e3R3ZLQFQ6sfLYW?p=preview

  • 我尝试了你的解决方案,但它没有工作 - 我得到一个例外"无法获取属性'然后'未定义或空引用'.似乎属性'关闭'在某种程度上是未定义的open方法返回的承诺... (2认同)
  • 不.从代码中删除modalInstance.result.then .... (2认同)