私は別のコントローラーから$ 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フレームワークで非常に一般的であるため、そうでない場合は驚かれることでしょう...
助けてください!
これを試して。
.open
メソッドは、.closed
メソッドの多くのプロパティの1つである.open
でチェーン化できるプロミスを返します。
私はそれをテストし、モーダルが「閉じている」間ではなく、モーダルが閉じた後にのみアラートを表示します。
Returnセクションの下の「closed」を参照してください 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');
});
ここにプランカーがあります http://plnkr.co/edit/yB3k8e3R3ZLQFQ6sfLYW?p=preview
使用する modalInstance.result
最後のイベントをキャッチする2番目のコールバックを約束します。また、例外が発生しています'undefinedまたはnull参照のプロパティ' then 'を取得できません' on .closed.then
、
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');
});