私はAngularMaterialの$ mdDialogサービスを使用しています。ここで私が使用していますサンプルコードだ -コールバックonRemovingのボタン値を取得
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;
});
show()
メソッドによって返される約束はmdDialogのボタンのいずれかがクリックされたときにのみ解決します。ボタンのインデックスは、answer
パラメータとして提供されます。回答/ボタンのインデックスが1でない場合にのみ何かをする必要があります。highlighter.answer
は、ボタンがクリックされたときに約束を解決する前にonRemovingが呼び出されているので、適切な値を取得できませんでした。必要(OnRemovingコールバックで)。
つまり、いずれかのボタンが呼び出されるたびに、またはボタンをクリックせずにダイアログが閉じられたときに、onRemovingが呼び出されます。約束は、ボタンがクリックされたときにのみ解決されます。
私の質問は、応答値が設定され、ボタンが呼び出されたかどうかを知るために、約束が解決された後に呼び出されるコールバックを持つ方法があるかどうかです。このコールバックは、プロミスが解決されたかどうかにかかわらず、ダイアログを削除するときに呼び出されます。
閉じる/解除ボタンを使用せずにダイアログを作成する方が簡単ですか?私はあなたが使用しているライブラリを知らないが、私はどこかの選択肢は確信しています。もう一つの選択肢は、答えが選択されるまでダイアログをもう一度スローすることです。 – Halcyon
@Halcyon外出先をクリックするだけでDislogが解除されることは明らかではないので、却下ボタンが必要です。 2番目の提案は悪いUXデザインのように聞こえます。 – noob