closures事件后的angular度用户界面模式

有一种方法可以在模态窗口被调用后调用函数(不pipe它是否发生在button上或点击背景)

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

我希望每次模态窗口都closures结果中的函数,然后执行。 现在只需执行手动closures模态我的$ modalInstance.close()。 但是,如果我点击背景此方法不会被调用

任何想法如何我可以做到这一点?

我会假设你正在使用angular-ui中的Modal对话框。 但是在详细讨论之前,需要在AngularJS中提供一些有关承诺的文档。 你需要知道每个函数都可以接受3个参数:

 then(successCallback, errorCallback, notifyCallback) 
  • 当promise被parsing时,执行successCallback
  • 当承诺被拒绝时,会执行errorCallback
  • notifyCallback在通知时执行。

在angularUI的模态的情况下,点击背景将导致被拒绝的承诺。 考虑到这一点,您的代码可以更改为:

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

你可以在这里看到一个工作的笨蛋

Angular 1.2支持promise finally(callback)

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

在这里检查工作的重击者。