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

时间:2016-07-06 10:27:15

标签: javascript angularjs modal-dialog 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 }
  }
});

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

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

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

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

请帮忙!

2 个答案:

答案 0 :(得分:26)

试试这个。

.open方法返回一个可以与.closed链接的承诺,.openvar modalInstance = $uibModal.open({ templateUrl: "myModalContent.html", controller: "termModalCtrl", windowClass: 'app-modal-window', resolve: { 'params': function () { return id } } }).closed.then(function(){ window.alert('Modal closed'); }); 方法的众多属性之一。

我测试了它,它只在模态关闭后显示警报,而不是在它关闭时显示警告。

请参阅返回部分here

下的“已关闭”
UPDATE

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

答案 1 :(得分:2)

使用modalInstance.result承诺第二次回调来捕捉结束事件。 我在.closed.then,<{1}}上也遇到异常'无法获取属性',然后是'未定义或空引用'

 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');
   });