Sweetalert: 第二只小狼未执行

创建于 2015-01-15  ·  19评论  ·  资料来源: t4t5/sweetalert

你好,

我有个甜蜜的电话:

var self = this; 

swal({
      title              : $.t('modal.clear.title') || "Etes vous sûr ?",
      text               : $.t('modal.clear.text') || "Le formulaire sera définitivement perdu !",
      type               : "warning",
      showCancelButton   : true,
      confirmButtonColor : "#DD6B55",
      confirmButtonText  : $.t('modal.clear.yes') || "Oui, supprimer",
      cancelButtonText   : $.t('modal.clear.no') || "Annuler",
      closeOnCancel      : true
}, function(isConfirm) {
   if (isConfirm){
       // I Use backbone radio event
       self.homePageChannel.trigger('deleteForm', self.currentSelectedForm)
   }
});

在回调中,我使用骨干无线电发送一个事件。
至此一切都很好。

在我的事件响应中,我想显示另一个类似这样的甜蜜警报:

formDeleted : function(result) {
        swal({
            title : $.t('modal.deleted.title') || 'Formulaire supprimé !',
            text  : $.t('modal.deleted.text') || 'Votre formulaire a été supprimé avec succès',
            type  : "success",
        });
  },

并且第二个甜蜜警报不会出现。
而且我确定formDeleted函数已执行。

谢谢你的帮助

最有用的评论

万一这对任何人都有帮助。 就我而言,我可以通过将closeOnCancel和/或closeOnConfirmfalse 。 从而防止关闭第二个警报框。 第二次swal调用可以将它们设置为true

所有19条评论

您可以尝试在JSFiddle中向我们展示您的代码吗?

我创建了一个JSFiddle: http :

当我单击按钮时,显示第一个sweetAlert,调用了回调,但是第二个sweetAlert没有。

您将在JSFiddle中看到我尝试过使用setTimeout的情况,它在2秒钟后可以工作

我遇到同样的问题。 愿意提供排序所需的任何信息。

+1解决问题所需的条件

万一这对任何人都有帮助。 就我而言,我可以通过将closeOnCancel和/或closeOnConfirmfalse 。 从而防止关闭第二个警报框。 第二次swal调用可以将它们设置为true

这不是正确的行为,我们不应该依赖于closeOnCancel和closeOnConfirm的值是什么。

我同意,但这可能是closeOnConfirm的预期目的,因为这也是打开第二个盒子的swal示例中的描述方式(http://tristanedwards.me/sweetalert)
我仍然同意这绝对是不直观的。

对我来说,即使那是行不通的。 您可以看一下我创建的小提琴。 https://jsfiddle.net/madhureng/5pj7wwx9/16/

我会很高兴它得到修复,而不是api为我做出决定。

@ maddy2308-您的点击次数过多。 确实有效。
看看这个小提琴: https :

我唯一更改的是取出您的第一个document.click,并将其更改为document.ready。

正如@joenorton所指出的,这就是closeOnConfirm: false的用途。 我确实同意这有点不直观,因此,如果任何人都有解决问题的方法,我很乐意添加!

@ maddy2308 ,您的小提琴的问题在于$('button')太含糊,因此也调用了swal的按钮。 如果您也更改了$('body > button')它应该可以工作。

我也遭受了这个问题的困扰,而且我确实认为需要对此进行更改。

@ t4t5在不查看源代码的情况下,我们可以假设以下内容:

the first swal is shown at point A in time
the user interacts with the first swal at point B in time
the callback is called and invokes the second swal at point C in time
the active swal is dismissed at point D in time

解决此问题的简单方法如下:

<strong i="11">@A</strong>: An integer variable is set that increases with every call to swal
<strong i="12">@B</strong>: The current value of the variable is remembered
<strong i="13">@D</strong>: If the variable has changed, do not call swal.close

这将允许C调用任意数量的新对话框,而无需对当前代码库进行任何修改。

我有同样的问题,通过在Confirm操作上添加$ timeout(使用Angular)解决了
if (isConfirm){ return $timeout(function() { // I Use backbone radio event self.homePageChannel.trigger('deleteForm', self.currentSelectedForm) }, 100); }

在以下情况下,我也会发生此错误:

  1. 调用确认甜蜜警报,该警报在角度触发一个$http请求
  2. 通过在Chrome开发人员工具上将限制设置为offline ,强制$http请求立即失败。
  3. $http失败时调用错误甜蜜警报。

第一个确认警报将显示正常,但错误警报将不会显示。

注意:我没有深入研究代码,但是看起来像任何现有的甜蜜警报上的关闭动画都应该被取消,并且应该立即销毁,然后第二个警报将很好地显示。


编辑:如我所料,问题在于第一个甜蜜警报确认。 将animation为false可以解决该问题。 但这对我来说似乎是一个错误,因为我可能希望在发生错误的情况下启用动画。

我提出两种解决方案:

第一个:如果在关闭现有警报的动画时调用了第二个警报,请停止动画处理,立即关闭当前警报并显示新警报。

第二:关闭动画结束时,将要打开的第二个警报排入队列。

第二种解决方案应该使事情变得更顺畅,而第一种解决方案则使错误模态的显示速度更快!

我会尝试提出请求,但我以前从未为这个项目做过贡献,如果有人知道要在哪里修复,请随时提出请求! :)

@ t4t5如果您同意我可以解决问题,请查看我的报告和解决方案!

您可以使用querySelectorAll ,它返回所有元素,因此您可以循环返回的值

var alertBtn = document.querySelectorAll('.js-alert');

for (var i = 0; i < alertBtn.length; i++) {
    alertBtn[i].onclick = function(){
        swal({
            title: "text",
            text: "text text"
            });
    };
}

我的SweetAlert遇到了同样的问题,当第二个swal应该出现时,它们没有出现,我只是在控制台中出现错误,通过在函数中包含$ timeout来解决了。

function(error) { console.log(error); $timeout(function(){ SweetAlert.error('Erro'); },100) }

我有同样的问题,但是@PommeVerte的解决方案解决了它。 我需要将closeOnCancel: false设置为父级swal()。

从SweetAlert 2.0开始,不再需要closeOnConfirmcloseOnCancel来链接SweetAlerts。 只是使用诺言! :)

SetTimeout可以解决回调后的问题,但是我想更多地了解问题的原因。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mouro001 picture mouro001  ·  3评论

waldyrious picture waldyrious  ·  5评论

krishnamraju picture krishnamraju  ·  3评论

rafatux picture rafatux  ·  5评论

xgqfrms-GitHub picture xgqfrms-GitHub  ·  4评论