0

HTTP リクエストを処理する Vue ディレクティブがあります。私がやろうとしているのは、約束を利用し、SweetAlert をプロセスにフックすることです。私は最初にonRequestSubmitを発射しています

    bind: function () {
        this.el.addEventListener('click', this.onRequestSubmit.bind(this));
    },

そして onRequestSubmit で

    onRequestSubmit: function (e) {
        e.preventDefault();

        this.fireFlashMessage()
        .then(this.vm.$http[this.getRequestType()](this.el.getAttribute("data-delete-url"), this.aggregateData()))
        .then(this.onComplete.bind(this))
        .catch(this.onError.bind(this));
    },

onRequestSubmit がリクエストを委任できるように、ユーザーが確認したときに fireFlashMessage が true を返すようにします。

私の質問は: fireFlashMessage を promise でラップし、呼び出しが正常に返されたときに続行する必要がありますか? 私は Promises に非常に慣れていないので、頭を包むのに苦労しています。

4

1 に答える 1

2

SweetAlert は、ウィンドウが約束ではなくコールバック関数を使用していることを確認します。次に、そのコールバック内で次のような約束を使用します

onRequestSubmit: function (e) {
    e.preventDefault();

    swal({
            title: "Are you sure?",  
            showCancelButton: true,   
            confirmButtonText: "Yes"
        }, 
        this.onRequestConfirm.bind(this)
    );
},
onRequestConfirm: function() {
    this.vm.$http[this.getRequestType()](this.el.getAttribute("data-delete-url"), this.aggregateData())
    .then(this.onComplete.bind(this))
    .catch(this.onError.bind(this));
}

編集:this.fireFlashMessage()必要に応じて再度リファクタリングできますが、その関数を使用しなくなったため削除されました

于 2016-01-26T14:39:05.170 に答える