AngularJSモーダルがモーダルのコントローラーロジックで閉じたり閉じたりするのを防ぐ方法はありますか?
私が望むのは、ユーザーがモーダルを閉じ、モーダル内のフォームに保存されていないデータが含まれているときに警告を表示することです。
公式ドキュメントで使用できる before close イベントまたは何かを検索しようとしましたが、今のところ運がありません。
AngularJSモーダルがモーダルのコントローラーロジックで閉じたり閉じたりするのを防ぐ方法はありますか?
私が望むのは、ユーザーがモーダルを閉じ、モーダル内のフォームに保存されていないデータが含まれているときに警告を表示することです。
公式ドキュメントで使用できる before close イベントまたは何かを検索しようとしましたが、今のところ運がありません。
次のように、モーダルのスコープにブロードキャストされた「modal.closing」イベントを見ることができます。
.controller('modalCtrl', function($scope, $modalInstance) {
$scope.$on('modal.closing', function(event, reason, closed) {
var r = prompt("Are you sure you wanna close the modal? (Enter 'YES' to close)");
if (r !== 'YES') {
event.preventDefault();
}
});
})
最初のパラメーターはeventです。これをpreventDefault()で閉じないようにすることができます。
2 番目のパラメーターは理由です ( $close()メソッドに渡されるものは何でも)
3 番目のパラメーターは、モーダルが閉じられたか、閉じられたかを示すブール値です。
ここで働くプランカー
これがいつ追加されたのかはわかりませんが、現在は公式ドキュメントに記載されています。
これにより、背景が $modal.close イベントをトリガーするのを停止します。
$modal.open({
// ... other options
backdrop : 'static',
keyboard : false
});
キーボードのESC
キーは引き続きモーダルを閉じることができるので、それを無効にしたい場合はkeyboard: false