Множественные приятные оповещения всегда выполняют первый обратный вызов подтверждения

Когда я использую несколько приятных предупреждений на одной странице, он всегда вызывает первый обратный вызов.

Я объясняю:

У меня есть кнопка для отправки запроса на добавление в друзья, которая становится кнопкой «ожидание/отмена» после нажатия

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

У каждой кнопки есть событие клика, вызывающее сладкое оповещение:

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 ...');
    ....
  }
});

Когда я нажимаю кнопку «Добавить в друзья» в первый раз, все работает нормально. Я получаю сладкое предупреждение, и после подтверждения мой обратный вызов выполняется правильно, и кнопка становится кнопкой «Ожидание/отмена».

Когда я после этого нажимаю эту кнопку «Ожидание/отмена», чтобы отменить мой запрос на добавление в друзья, я получаю правильное приятное предупреждение, но когда я подтверждаю, он выполняет обратный вызов «sendFriendRequest» для первой кнопки «добавить друга».

Я не мог понять, почему он так себя ведет... Есть мысли по этому поводу? Заранее спасибо.

ОБНОВЛЕНИЕ: после добавления журналов

Первый клик: добавить друга:

Журналы клиента:

внутри нажмите .add-friend…

Внутри галочка подтверждения добавления друга…

Журналы сервера:

Внутри sendFriendRequest...

Второй щелчок: отменить ожидающий запрос:

Журналы клиентов

внутри нажмите .cancel-request

Внутри галочка подтверждения добавления друга…

Журналы сервера:

Внутри sendFriendRequest...


person Amine Sadry    schedule 16.02.2016    source источник
comment
Добавьте несколько журналов консоли: первый в вашем событии .add-friend, второй в вашем событии .cancel-request, третий в вашем обратном вызове sendFriendRequest и последний в вашем обратном вызове cancelFriendRequest. Убедитесь, что правильный путь кода действительно выполняется.   -  person Stephen Woods    schedule 16.02.2016
comment
Я добавил журналы, как вы предложили (вопрос отредактирован), и получил следующий результат: Первый клик: добавить друга: Журналы клиента: внутри кликнуть .add-friend… Внутри добавить-друга подтверждение swal… Журналы сервера: Внутри sendFriendRequest... Второй щелчок: отменить ожидающий запрос: журналы клиента внутри щелчка .cancel-request Внутри надстройки подтверждение друга... Журналы сервера: Внутри sendFriendRequest...   -  person Amine Sadry    schedule 16.02.2016
comment
Привет, ты когда-нибудь решил эту проблему? Если да, то как? У меня такая же проблема.   -  person ickyrr    schedule 02.05.2016
comment
Я тоже испытываю эту же проблему. Если вы или кто-то другой понял это, было бы здорово, если бы вы могли поделиться решением. Спасибо!   -  person kevinvile    schedule 04.05.2016
comment
Та же проблема здесь ... на самом деле я столкнулся с проблемой, когда оптимизировал одну из своих серверных служб;)   -  person pinkpanther    schedule 28.11.2016


Ответы (1)


Просто установите closeOnConfirm: false в конфигурации swal.

person Sanjay_Umeda    schedule 31.01.2018