javascript - 多个甜蜜警报始终执行第一个确认回调

标签 javascript meteor sweetalert

当我在同一页面中使用多个甜蜜警报时,它总是调用第一个回调。

我解释一下:

我有一个发送好友请求的按钮,点击后会变成“待处理/取消”按钮

{{#if addFriend}}
    <li>{{> addFriendBtn user=usr}}</li>
{{/if}}
{{#if pending}}
    <li>{{> pendingFriendBtn user=usr}}</li>
{{/if}}

每个btn都有一个点击事件调用sweetalert:

Template.addFriendBtn.events({
'click .add-friend': function (evt,tpl) {
        console.log('inside click .add-friend...');
        const options = {
            title: "Friend request",
            showCancelButton: true,
            confirmButtonText: "Oui",
            closeOnConfirm: true,
            closeOnCancel:true,
            allowOutsideClick: false,
            allowEscapeKey:true
        };

        swal(options, function () {
           console.log("Inside add-friend confirmation swal...");
           Meteor.call('sendFriendRequest', tpl.data.user);
        });
   }
}); 

Template.pendingFriendBtn.events({
    'click .cancel-request': function (evt, tpl) {
        console.log('inside click .cancel-request');
        const options = {
                    title: "Confirmation",
                    showCancelButton: true,
                    closeOnConfirm: true,
                    closeOnCancel:true,
                    allowOutsideClick: false,
                    allowEscapeKey:true
                };

        swal(options, function(){
           console.log("inside cancel-request confirmation swal...");
           Meteor.call('cancelFriendRequest', tpl.data.user);
         });

    }
});

Meteor.methods({
  sendFriendRequest: function (recipient) {
    console.log('Inside sendFriendRequest...');
    ...
  },

  cancelFriendRequest: function (recipient) {
    console.log('Inside cancelFriendRequest ...');
    ....
  }
});

当我第一次点击“添加 friend ”按钮时,效果很好。我收到甜蜜的警报,确认后,我的回调正确完成,按钮变为“待处理/取消”按钮。

当我点击这个“待处理/取消”按钮取消我的好友请求时,我收到了正确的甜蜜警报,但是当我确认时,它会为第一个按钮“添加好友”执行回调“sendFriendRequest”。

我不明白为什么它会这样......对这个问题有什么想法吗?提前致谢。

更新:添加日志后

首次点击:添加好友:

客户端日志:

在里面点击.add-friend...

内部添加好友确认信息...

服务器日志:

sendFriendRequest 内部...

第二次点击:取消待处理的请求:

客户端日志

内部点击.cancel-request

内部添加好友确认信息...

服务器日志:

sendFriendRequest 内部...

最佳答案

只需在 swal 配置中设置 closeOnConfirm: false 即可。

关于javascript - 多个甜蜜警报始终执行第一个确认回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35436354/

相关文章:

javascript - 如何制作带有文本可选子元素的 <a> 元素?

javascript - 任务名称的 Gulp.js 约定

basic-authentication - 有没有一种简单的方法可以为 Meteor 应用程序设置 HTTP 基本身份验证?

javascript - 从助手异步返回值?

javascript - Meteor:防止 findOne() 出现未定义的结果

javascript - SweetAlert2 添加动态选项来选择输入

javascript - 链接 sweetalert2 模态

javascript - sweet-alert 在文本中显示 HTML 代码

Visual Studio 中的 javascript 智能感知

javascript - 数组中未知大小的字符串数组