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'); });
在这里检查工作的重击者。