Réponse de la boîte de dialogue de confirmation d'alerte douce

J'ai une fonction où je costumise mon dialogue d'alerte douce. Je veux l'utiliser dans beaucoup d'endroits et donc définir cela dans une fonction comme:

$rootScope.giveConfirmDialog = function(title,text,confirmButtonText,toBeExecFunction){ swal({title: title, text: title, ..... confirmButtonText: confirmButtonText }, toBeExecFunction); } 

Ce que je veux faire est simple: appeler cette fonction à quelque part et continuer sur la base de la réponse de l'utilisateur, ainsi:

 var res = $scope.$root.giveConfirmDialog("..", "test", "test", function () { return true; }); 

Mais je ne prends aucune réponse. En fait, je ne pouvais pas trouver un tel exemple et je pense que ce n'est pas la manière courante d'utilisation. Mais comment cela peut-il être possible?

Il semble que vous voulez un comportement différent selon que l'utilisateur appuie sur le bouton de confirmation ou sur le bouton d'annulation.

SweetAlert expose la réponse de l'utilisateur via un paramètre sur la fonction de rappel.

Voici un exemple de la forme droite du SweetAlert Docs :

 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"); } } ); 

Dans cet exemple, lorsque vous appuyez sur le bouton de confirmation, une nouvelle SweetAlert est ouverte, confirmant votre action, et si vous appuyez sur le bouton d'annulation, une nouvelle SweetAlert est ouverte, notant que l'action a été annulée. Vous pouvez remplacer ces appels par les fonctionnalités dont vous avez besoin.

Étant donné que cette bibliothèque utilise des rappels asynchrones, il n'y a pas de valeur de retour de la méthode swal .

En outre, il serait probablement préférable d'utiliser une bibliothèque telle que ng-sweet-alert pour envelopper les appels à une alerte douce afin de s'assurer que les changements que vous effectuez dans les rappels Sweet Alert sont correctement récupérés par le cycle de vie angulaire. Si vous consultez la source pour ng-sweet-alert, vous verrez que l'auteur enveloppe les appels à swal et le rappel de l'utilisateur dans $rootScope.$evalAsync , en veillant à ce que les mises à jour angulaires lorsque les appels et les rappels soient terminés.

Du point de vue du style de code, il serait préférable de mettre votre logique dans un service ou une usine pour la réutiliser dans votre base de code plutôt que de l'attacher à $ rootScope.

Vous n'obtiendrez pas de réponse car cela est asynchrone, vous pouvez utiliser l'extrait de code suivant

 swal({ title: "Are You Sure?", text: "Are you sure to go ahead with this change?", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "Yes", cancelButtonText: "No", closeOnConfirm: true, closeOnCancel: true, }, function(isConfirm){ if (isConfirm) { $.ajax({ url:"/path", method:"GET", data: { category_id: category_id, }, success:function(response) { // tasks on reponse } })