我正在使用来自另一个控制器的$ 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框架中都很常见......
请帮忙!
答案 0 :(得分:26)
试试这个。
.open
方法返回一个可以与.closed
链接的承诺,.open
是var 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');
});