Wir haben einen Callback-Parameter für die Bestätigungsschaltfläche, aber wie können wir einen Rückruf für die Abbrechen-Schaltfläche verwenden?
Ich sehe im Code einen doneFunction
Parameter.
Ich versuche diesen Code, aber mein Rückruf scheint komplett ignoriert zu werden. Was mache ich falsch?
(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"))
Bei mir das Gleiche. Meine Callback-Funktion wird beim Klicken auf die OK-Schaltfläche aufgerufen, jedoch nicht bei der Abbrechen-Schaltfläche.
@jeffmath Ich bin zu https://github.com/limonte/sweetalert2 gewechselt, um das zu lösen
Ein Beispiel dafür finden Sie in der Dokumentation: http://t4t5.github.io/sweetalert/
"... und durch Übergabe eines Parameters können Sie etwas anderes für 'Abbrechen' ausführen."
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 Durch isConfirm können wir überprüfen, ob die Benutzerantwort die Schaltfläche Bestätigen oder etwas anderes war. Aber könnten Sie mir bitte sagen, wie ich überprüfen kann, ob es sich bei der angeklickten Schaltfläche um eine Schaltfläche "Bestätigen" oder "Abbrechen" oder "Schließen" handelt, da ich die Schaltfläche Abbrechen auch verwende, um an eine andere Stelle umzuleiten, aber die Schaltfläche Schließen nur die Warnung schließt?
Das eigentliche Problem ist, dass in sweetalert v1.x der Cancel-Handler prüft, ob der Callback mit function(
beginnt https://github.com/t4t5/sweetalert/blob/v1.1.3/lib/modules/handle- click.js#L119.
Wenn diese Bedingung also nicht erfüllt ist, wie im Beispiel von doneFunction(
der Rückruf einfach ignoriert.
Guter Fang @gualopezb. Ich habe das schon ewig laufen lassen und plötzlich hat es nicht mehr funktioniert.
Abhilfe:
- }, (code) => {
+ }, function(code) {
Ich vermute, dass eine Änderung in meiner Babel-Konfiguration im Spiel ist.
Hilfreichster Kommentar
Ein Beispiel dafür finden Sie in der Dokumentation: http://t4t5.github.io/sweetalert/
"... und durch Übergabe eines Parameters können Sie etwas anderes für 'Abbrechen' ausführen."