有一种方法可以在调用模态窗口后调用函数(无论是通过按钮还是通过单击背景来发生)
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()时执行。但如果我点击背景,这个方法就不会被称为
任何想法我怎么能这样做?
答案 0 :(得分:59)
我将假设你正在使用angular-ui的Modal对话框。但在进入细节之前,需要一些关于AngularJS中承诺的文档。您需要知道每个然后函数都可以接受3个参数:
then(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。