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?
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.
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'."