Sweetalert: Funktion beim Bestätigen funktioniert nicht

Erstellt am 10. Okt. 2014  ·  9Kommentare  ·  Quelle: t4t5/sweetalert

Hallo, ich habe SweetAlert schon einmal mit Erfolg verwendet, aber heute habe ich es mit Ionic versucht und habe ein Problem.
Wenn ich es so verwende, führt es die Funktion etwas aus, wartet aber nicht darauf, dass die Bestätigungstaste gedrückt wird:

$scope.something=function(){console.log('test')};
swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },$scope.something());

Wenn ich es so verwende, funktioniert es überhaupt nicht:

swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },function(){console.log('test')});

Irgendwelche Ideen?

Hilfreichster Kommentar

Das Konsolenprotokoll sollte funktionieren, aber nur für den Fall. Denken Sie daran, dass Sie in Angular $scope.$digest() aufrufen müssen; wenn Sie andere Bibliotheken verwenden, um Ansichten und Bereiche zu aktualisieren.

Wenn Sie also Sweet Alert verwenden, stellen Sie sicher, dass Ihr Rückruf wie folgt aussieht:

$scope.something=function(){
  console.log('test');
  // You might have something that updates your scope here
  ...
  $scope.$digest();
};
swal({
    title: 'True',
    text: '',
    type: 'success',
    confirmButtonText: 'Next' 
  }, $scope.something);

Alle 9 Kommentare

Ich bin auf etwas ähnliches bei eckig gestoßen.

$scope.deleteSomething = function () {
    swal({   title: 'Are you sure?', text: 'Your will not be able to recover this thing!',
                type: 'warning',
                showCancelButton: true, confirmButtonColor: '#DD6B55',
                confirmButtonText: 'Yes, delete it!', closeOnConfirm: false },
                function () {
                    // Code to delete something
                    swal('Deleted!', 'It was deleted.', 'success');
                   // The success alert only shows for a split second and is gone
                }
          });

Scheint etwas damit zu tun zu haben, es in einer Funktion zu haben, die im Gültigkeitsbereich aufgerufen wird, oder es einfach in einem Callbak zu haben, aber was weiß ich :)

Wenn ich es herausbekomme, poste ich hier. Sieht so aus, als ob hier etwas Ähnliches vor sich geht: https://github.com/t4t5/sweetalert/issues/52

Könnte sich irren, aber es sieht so aus, als ob Sie die Klammern von $scope.something() als Rückruf entfernen müssen, wie

swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },$scope.something);

Wenn Sie die Klammern einschließen, führt der JS-Interpreter $scope.something() aus und weist das Ergebnis als Callback zu, weshalb er nicht auf das Drücken der Bestätigungsschaltfläche wartet. In Ihrem zweiten Beispiel übergeben Sie die Funktionsdefinition (genauso wie die Übergabe von $scope.something ohne Klammern), weshalb das funktioniert.

Danke aber das habe ich schon probiert und es bringt nichts

@schris12 check ngSweetAlert . vielleicht kann es helfen

Das Konsolenprotokoll sollte funktionieren, aber nur für den Fall. Denken Sie daran, dass Sie in Angular $scope.$digest() aufrufen müssen; wenn Sie andere Bibliotheken verwenden, um Ansichten und Bereiche zu aktualisieren.

Wenn Sie also Sweet Alert verwenden, stellen Sie sicher, dass Ihr Rückruf wie folgt aussieht:

$scope.something=function(){
  console.log('test');
  // You might have something that updates your scope here
  ...
  $scope.$digest();
};
swal({
    title: 'True',
    text: '',
    type: 'success',
    confirmButtonText: 'Next' 
  }, $scope.something);

@oitozero - ngSweetAlert funktioniert wie ein Zauber! Danke!

@oitozero , ngSweetAlert hat auch bei mir funktioniert. Vielen Dank!
Danke @blaiprat auch für den Tipp und das Verständnis des Problems.

@SeanPlusPlus @ruairitobrien
Fantastisch. :+1:

Gerade eine neue Version veröffentlicht, die Änderungen in sweetalert (0.2.0) widerspiegelt.

Vielen Dank.
Es gibt ein kleines, oder sogar ein großes "aber" - wenn Sie im aktiven Modellierungsfenster aufrufen, funktionieren die Schaltflächen nicht.
Bitte sagen Sie mir, wie ich die Geißel loswerden kann?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen