モーダルウィンドウが呼び出された後に関数を呼び出す方法はありますか(ボタンで発生したか、背景をクリックして発生したかは関係ありません)
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'
});
});
モーダルウィンドウがresult.then promiseの関数を閉じるたびに実行されます。モーダルを手動で閉じたときに$ modalInstance.close()を実行するだけです。しかし、私が背景をクリックすると、このメソッドは呼び出されません
どのように私はこれを行うことができますか?
角度UIからモーダルダイアログを使用していると仮定します。しかし、詳細に入る前に、AngularJSのpromiseに関するドキュメントが少し必要です。すべてのthen関数が3つのパラメーターを受け入れることができることを知っておく必要があります。
then(successCallback, errorCallback, notifyCallback)
アンギュラーUIのモーダルの場合、背景をクリックするとプロミスが拒否されます。これを念頭に置いて、コードを次のように変更できます。
dialog.result.then(function () {
alert('Modal success at:' + new Date());
}, function () {
alert('Modal dismissed at: ' + new Date());
});
あなたは働くプランカーを見ることができます ここ
Angular 1.2は、 finally(callback)
のpromiseをサポートしています。
dialog.result.finally(function() {
alert('clean up resources');
});
作業中のプランカーを確認してください こちら 。