9

我使用另一個控制器的$ 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) { 
}); 

的問題是,回調函數先於實際收盤稱爲(當模態窗口仍然打開時),這不是我想要的行爲,因爲這意味着它捕捉模式的「關閉」事件而不是「關閉」事件。

是否有一個簡潔而實用的方法來執行此操作?我會很驚訝,如果沒有,因爲這種行爲是非常普遍的在這個星球上的任何UI框架...

請幫助!

回答

22

試試這個。

.open方法返回可能與.closed鏈接的承諾,這是.open方法的許多屬性之一。

我測試了它,它僅在模式關閉後才顯示警報,而不是在「關閉」時顯示。

請參考下返回部分here

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

這裏是plunker http://plnkr.co/edit/yB3k8e3R3ZLQFQ6sfLYW?p=preview

+2

我想你的解決方案,但它不工作「封閉」 - 我發現了一個異常「無法獲取屬性'then'未定義或空引用「。看起來像「封閉」的財產對於由開放方法返回的承諾是不確定的... –

+2

沒有。從代碼中刪除modalInstance.result.then ...。 – Srijith

+0

爲了達到這個目的,我們必須使用$ uibModalInstance.close('cancel')關閉彈出窗口。但不使用解僱功能。 –

相關問題