Sweetalert: Como lidar com a ação do botão de cancelamento

Criado em 25 jan. 2017  ·  7Comentários  ·  Fonte: t4t5/sweetalert

Temos um parâmetro de retorno de chamada para o botão de confirmação, mas como podemos usar um retorno de chamada para o botão de cancelamento?

Comentários muito úteis

Você pode encontrar um exemplo de como fazer isso na documentação: http://t4t5.github.io/sweetalert/

"... e passando um parâmetro, você pode executar outra coisa para 'Cancelar'."

swal({
  title: "Are you sure?",
  text: "You will not be able to recover this imaginary file!",
  type: "warning",
  showCancelButton: true,
  confirmButtonColor: "#DD6B55",
  confirmButtonText: "Yes, delete it!",
  cancelButtonText: "No, cancel plx!",
  closeOnConfirm: false,
  closeOnCancel: false
},
function(isConfirm){
  if (isConfirm) {
    swal("Deleted!", "Your imaginary file has been deleted.", "success");
  } else {
    swal("Cancelled", "Your imaginary file is safe :)", "error");
  }
});

Todos 7 comentários

Vejo no código que há um parâmetro doneFunction .

Estou tentando este código, mas parece que meu retorno de chamada foi completamente ignorado. O que estou fazendo de errado?

(new Promise((resolve, reject) => {
  swal({
    title: "Delete data?",
    text: "Deleted data will be lost.",
    type: "warning",
    showCancelButton: true,
    confirmButtonColor: "#DD6B55",
    confirmButtonText: "Delete",
    closeOnConfirm: false,
    html: false,
    doneFunction(res) {
      if (res) {
        resolve();
      } else {
        reject();
      }
    }
  });
})).then(() => console.log("Resolved"), () => console.log("Rejected"))

A mesma coisa para mim. Minha função de retorno de chamada é chamada quando o botão ok é clicado, mas não para o botão cancelar.

@jeffmath mudei para https://github.com/limonte/sweetalert2 para resolver isso

Você pode encontrar um exemplo de como fazer isso na documentação: http://t4t5.github.io/sweetalert/

"... e passando um parâmetro, você pode executar outra coisa para 'Cancelar'."

swal({
  title: "Are you sure?",
  text: "You will not be able to recover this imaginary file!",
  type: "warning",
  showCancelButton: true,
  confirmButtonColor: "#DD6B55",
  confirmButtonText: "Yes, delete it!",
  cancelButtonText: "No, cancel plx!",
  closeOnConfirm: false,
  closeOnCancel: false
},
function(isConfirm){
  if (isConfirm) {
    swal("Deleted!", "Your imaginary file has been deleted.", "success");
  } else {
    swal("Cancelled", "Your imaginary file is safe :)", "error");
  }
});

@ t4t5 Por meio de isConfirm, podemos verificar se a resposta do usuário foi o botão Confirmar ou outra coisa. Mas você poderia me dizer como verificar se o botão clicado era um botão "Confirmar" ou "Cancelar" ou "Fechar" porque estou usando o botão Cancelar também para redirecionar para outro lugar, mas o botão Fechar apenas fecha o alerta?

O problema real é que no sweetalert v1.x o manipulador de cancelamento está verificando se o retorno de chamada começa com function( https://github.com/t4t5/sweetalert/blob/v1.1.3/lib/modules/handle- click.js # L119.
Portanto, se essa condição não for atendida, como o exemplo de @Zorgatone está usando doneFunction( o retorno de chamada será simplesmente ignorado.

Boa captura @gualopezb. Eu tive isso funcionando desde sempre e de repente parou de funcionar.

Le fix:

-    }, (code) => {
+    }, function(code) {

Estou supondo que alguma mudança em minha configuração do Babel está em jogo.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

rapeflower picture rapeflower  ·  4Comentários

fracz picture fracz  ·  4Comentários

rafatux picture rafatux  ·  5Comentários

Lusitaniae picture Lusitaniae  ·  4Comentários

sastrahost picture sastrahost  ·  5Comentários