AngularMaterial の $mdDialog サービスを使用しています。これが私が使用しているサンプルコードです-
var highlighter = {};
$mdDialog.show({
templateUrl: 'sample.html',
parent: angular.element(document.body),
clickOutsideToClose: true,
bindToController: true,
onRemoving: function (event, removePromise) {
if(highlighter.answer!==1) {
//Do something here
}
highlighter.answer = undefined;
}
})
.then(function (answer) {
highlighter.answer = answer;
});
メソッドによって返される promise はshow()
、mdDialog のいずれかのボタンがクリックされた場合にのみ解決されます。ボタンのインデックスはanswer
パラメータとして提供されます。回答/ボタンのインデックスが 1 に等しくない場合にのみ、何かを行う必要があります
。問題は、ボタンのいずれかがクリックされたときに約束を解決する前に onRemoving が呼び出されるため、highlighter.answer
必要なときに適切な値を取得できませんでした ( onRemoving コールバック)。
つまり、いずれかのボタンが呼び出されたとき、またはボタンをクリックせずにダイアログが閉じられたときに、onRemoving が呼び出されます。ボタンがクリックされたときにのみ、promise が解決されます。
だから私の質問は、答えの値が設定され、ボタンが呼び出されたかどうかを知るために、プロミスが解決された後に呼び出されるコールバックを持つ方法はありますか? このコールバックは、promise が解決されたかどうかにかかわらず、ダイアログを削除するときに呼び出される必要があります。