【问题标题】:Wait for Sweetalert2 async confirm before continuing filepredelete event in bootstrap-fileinput在继续引导文件输入中的文件预删除事件之前等待 Sweetalert2 异步确认
【发布时间】:2018-05-21 06:08:51
【问题描述】:

插件引导文件输入和SweetAlert2有一些问题

这是为了显示一个对话框来确认用户是否真的要继续删除文件。

如果我要中止删除文件,我需要为 filepredelete 事件返回一个布尔值。该函数是同步的,但我使用的是带有承诺的异步插件 SweetAlert2。

这是我的代码:

$("#gallery-images").fileinput({
           ...

}).on("filepredelete", function(event, key, jqXHR, data) {

    swal({
        title: 'Are you sure you want to delete this image?',
        showCancelButton: true,
        confirmButtonText: 'Confirm',
        cancelButtonText: 'Cancel',
        type: 'warning',
    }).then((result) => {
        if(result.value){
            return false;
        }
        return true;
    });

});

我找不到等待确认的方法。我正在考虑总是中止删除,并在用户确认时手动删除文件。我需要重构我的代码。

【问题讨论】:

  • 您不能等待异步操作返回。我同意唯一的方法是just always abort the deletion and just manually delete the file when the user confirmed.

标签: javascript sweetalert2 kartik-v


【解决方案1】:

尝试一下承诺,我已经为同样的问题苦苦挣扎了 3 天,并想通了,希望这对某些人有所帮助。

$("#gallery-images").fileinput({
       ...

    }).on("filepredelete", function(event, key, jqXHR, data) {

    return new Promise(function(resolve, reject) {
            swal.fire({
                title: 'Are you sure?',
                text: 'You will not be able to recover this file!',
                icon: 'warning',
                showCancelButton: true,
                confirmButtonText: 'Yes, delete it!',
                cancelButtonText: 'No, keep it'
            }).then((result) => {
                if (result.value) {
                    resolve();
                }
            });
        });

    });

享受吧!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2020-07-14
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多