0

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 が解決されたかどうかにかかわらず、ダイアログを削除するときに呼び出される必要があります。

4

1 に答える 1