当我在同一页面中使用多个甜蜜警报时,它始终会调用第一个回调。
我解释说:
我有一个发送好友请求的按钮,该请求成为"待定/取消"点击后按钮
{{#if addFriend}}
<li>{{> addFriendBtn user=usr}}</li>
{{/if}}
{{#if pending}}
<li>{{> pendingFriendBtn user=usr}}</li>
{{/if}}
每个btn都有一个调用甜蜜警报的点击事件:
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 ...');
....
}
});
当我点击&#34;添加朋友&#34;按钮第一次,它工作正常。我得到了甜蜜的警报,确认后,我的回调正确完成,按钮变为&#34;待定/取消&#34;按钮。
当我在此之后点击&#34;待定/取消&#34;按钮取消我的朋友请求,我得到正确的甜蜜警报,但当我确认时,它执行回调&#34; sendFriendRequest&#34;对于第一个按钮&#34;添加朋友&#34;。
我无法弄清楚它为什么会这样......对这个问题有什么看法?提前致谢。
更新:添加日志后
首先点击:添加好友:
客户日志:
在内部点击.add-friend ...
内部添加好友确认swal ...
服务器日志:
在sendFriendRequest内...
第二次点击:取消待处理的请求:
客户端日志
内部点击.cancel-request
内部添加好友确认swal ...
服务器日志:
在sendFriendRequest内...
答案 0 :(得分:2)
在你的swal配置中设置closeOnConfirm:false。