Tenemos un parámetro de devolución de llamada para el botón de confirmación, pero ¿cómo podemos usar una devolución de llamada para el botón de cancelación?
Veo en el código que hay un parámetro doneFunction
.
Estoy probando este código pero parece que mi devolución de llamada se ignora por completo, ¿qué estoy haciendo mal?
(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"))
Lo mismo para mí. Mi función de devolución de llamada se llama cuando se hace clic en el botón Aceptar, pero no para el botón Cancelar.
@jeffmath Cambié a https://github.com/limonte/sweetalert2 para resolver eso
Puede encontrar un ejemplo de cómo hacer esto en la documentación: http://t4t5.github.io/sweetalert/
"... y al pasar un parámetro, puede ejecutar algo más 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 A través de isConfirm, podemos verificar si la respuesta del usuario fue el botón Confirmar u otra cosa. Pero, ¿podría decirme cómo verificar si el botón en el que se hizo clic fue un botón "Confirmar" o un botón "Cancelar" o un botón "Cerrar" porque estoy usando el botón Cancelar también para redirigir a otro lugar, pero el botón Cerrar simplemente cierra la alerta?
El problema real es que en sweetalert v1.x, el controlador de cancelación está verificando que la devolución de llamada comience con function(
https://github.com/t4t5/sweetalert/blob/v1.1.3/lib/modules/handle- click.js # L119.
Entonces, si esa condición no se cumple, como el ejemplo de @Zorgatone está usando doneFunction(
la devolución de llamada simplemente se ignorará.
Buen partido @gualopezb. He tenido esto funcionando desde siempre y de repente dejó de funcionar.
Le fix:
- }, (code) => {
+ }, function(code) {
Supongo que está en juego algún cambio en mi configuración de Babel.
Comentario más útil
Puede encontrar un ejemplo de cómo hacer esto en la documentación: http://t4t5.github.io/sweetalert/
"... y al pasar un parámetro, puede ejecutar algo más para 'Cancelar'".