在模式关闭后捕获 Angular 引导 UI $uibModal关闭事件

catching Angular Bootstrap UI $uibModal closed event after the modal was closed

本文关键字:UI uibModal 引导 事件 模式 Angular      更新时间:2023-09-26

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

打开模式的代码如下所示:

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

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

modalInstance.result.then(function(result) {
});

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

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

请帮忙!

试试这个。

.open方法返回一个承诺,该承诺可以与.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');
});

这是普伦克 http://plnkr.co/edit/yB3k8e3R3ZLQFQ6sfLYW?p=preview

使用 promise 第二次回调modalInstance.result捕获收盘事件。我还收到异常"无法获取未定义或空引用的属性'然后'".closed.then

 var modalInstance = $uibModal.open({
    templateUrl: "myModalContent.html",
    controller: "termModalCtrl",
    windowClass: 'app-modal-window',
    resolve: {
        'params': function () { return id }
    }
});
modalInstance.result
   .then(function (selectedItem) {
    //
   }, function () {
    //close callback
    console.info('modal closed');
   });