web-dev-qa-db-ja.com

catching Angular Bootstrapモーダルが閉じられた後のUI $ uibModal closedイベント

私は別のコントローラーから$ 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フレームワークで非常に一般的であるため、そうでない場合は驚かれることでしょう...

助けてください!

12
Avner Hoffmann

これを試して。

.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

26
Srijith

使用する 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');
   });
2
Ruben.sar