0

これは、sweetalert2を追加して投稿を削除する前の私のコードです。

if (action == "delete") {
            this.model.destroy({
                beforeSend: function() {
                    target.addClass('loading');
                    view.blockUi.block(view.$el);
                },
                success: function(result, status, jqXHR) {
                    view.blockUi.unblock();
                    target.removeClass('loading');
                    if (status.success) {

                        if (result.get('post_type') == "post")
                            window.location.href = status.redirect;
                        else
                            view.$el.fadeOut();
                    } else {
                        // Error
                    }
                }
            });
            return false;
        }

これは、sweetalert2 をアクションと互換性があるようにするための私の編集です。

if (action == "delete") {

            swal({
                title: 'Are you sure?',
                text: "You won't be able to revert this!",
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#3085d6',
                cancelButtonColor: '#d33',
                confirmButtonText: 'Yes, delete it!'
            }).then(function () {
                swal(
                    'Deleted!',
                    'Your post has been deleted.',
                    'success'
                ),
                  this.model.destroy({
                    beforeSend: function() {
                        target.addClass('loading');
                        view.blockUi.block(view.$el);

                    },

                        success: function(result, status, jqXHR) {
                            view.blockUi.unblock();
                            target.removeClass('loading');
                            if (status.success) {

                                if (result.get('post_type') == "post")
                                    window.location.href = status.redirect;
                                else
                                    view.$el.fadeOut();
                            } else {
                                // Error
                            }

                    }
                })
            });
            return false;
        }

sweetalert2 ダイアログが正しく機能しているのに、投稿の削除のアクションが機能していないという間違いを見つけることができません。どうすればよいですか?

4

1 に答える 1

0

sweetalert2 ダイアログが正しく機能しているのに、投稿の削除のアクションが機能していないという間違いを見つけることができません。どうすればよいですか?

最初に sweetalert を呼び出すと、ユーザーからの応答を求めるプロンプトが表示されます。

then() メソッドは Promise を返します。最大 2 つの引数を取ります: Promise の成功と失敗の場合のコールバック関数です。

ユーザーが確認すると、コードを実行できます。成功とエラーをキャッチする方法を既に実装しているので、これらのいずれかが発生した場合は、sweetalert を再度呼び出して前のアラートを上書きし、正しいアラートをユーザーに表示するだけで済みます。オプションで、ユーザーがキャンセルしてさらにフィードバックを提供することを決定した場合に、同じことを行うことができます。

これでうまくいくと思います:

if (action == "delete") {

swal({
    title: 'Are you sure?',
    text: "You won't be able to revert this!",
    type: 'warning',
    showCancelButton: true,
    confirmButtonColor: '#3085d6',
    cancelButtonColor: '#d33',
    confirmButtonText: 'Yes, delete it!'
}).then(function () {

      this.model.destroy({
        beforeSend: function() {
            target.addClass('loading');
            view.blockUi.block(view.$el);

        },
            success: function(result, status, jqXHR) {
                view.blockUi.unblock();
                target.removeClass('loading');
                if (status.success) {
                    // Success
                    swal(
                        'Deleted!',
                        'Your file has been deleted.',
                        'success'
                      )
                } else {
                    // Error
                    swal(
                      'Failed',
                      'Your file has not been deleted',
                      'error'
                    )
                }

        }
    })
}, function () {
// Cancelled
    swal(
      'Cancelled',
      'Your file has not been deleted',
      'error'
    )
});

return false;
}
于 2017-01-13T00:00:01.993 に答える