关闭事件后的角度ui模态

时间:2013-09-23 14:57:36

标签: javascript jquery twitter-bootstrap angularjs angular-ui

有一种方法可以在调用模态窗口后调用函数(无论是通过按钮还是通过单击背景来发生)

var dialog, options;

options = {
  windowClass: "lightBox"
  templateUrl: "url to the template",
  controller: "some random controller",
  scope: $scope
});

$("body").css({
  'overflow': 'hidden'
});

dialog = $modal.open(options);

dialog.result.then(function() {
  $("body").css({
    'overflow': 'auto'
  });
});

我希望每当模态窗口关闭result中的函数时,然后执行promise。现在它只是在我手动关闭模态我的$ modalInstance.close()时执行。但如果我点击背景,这个方法就不会被称为

任何想法我怎么能这样做?

2 个答案:

答案 0 :(得分:59)

我将假设你正在使用angular-ui的Modal对话框。但在进入细节之前,需要一些关于AngularJS中承诺的文档。您需要知道每个然后函数都可以接受3个参数:

then(successCallback, errorCallback, notifyCallback) 
  • successCallback 在解析承诺时执行。
  • 承诺被拒绝时执行
  • errorCallback
  • notifyCallback 会在收到通知时执行。

对于angular-ui的模态,单击背景将导致拒绝承诺。考虑到这一点,您的代码可以更改为:

dialog.result.then(function () {
  alert('Modal success at:' + new Date());
}, function () {
  alert('Modal dismissed at: ' + new Date());
});

你可以看到一个工作的动物here

答案 1 :(得分:20)

Angular 1.2支持finally(callback)的承诺:

dialog.result.finally(function() {
    alert('clean up resources');
});

查看工作人员here