Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
97
rated 0 times [  98] [ 1]  / answers: 1 / hits: 39983  / 9 Years ago, thu, october 29, 2015, 12:00:00

I have a function where i costumize my sweet-alert dialog. I want to use it in a lot of places and therefore set that in a function like:



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


What i want to do is simple: calling that function in somewhere and go on based on the answer of the user, thus:



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


But i don't take any response. Actually, i couldn't find such an example and i think its not the common way of use. But how can it be possible?


More From » angularjs

 Answers
87

It sounds like you want different behavior based on if the user presses the confirm button or the cancel button.



SweetAlert exposes the user response via a parameter on the callback function.



Here's an example straight form the 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);
}
}
);


In this example, when the confirm button is pressed, a new SweetAlert is opened, confirming your action, and if cancel button is pressed, a new SweetAlert is opened, noting that the action was cancelled. You can replace these calls with whatever functionality you need.



Since this library is using async callbacks, there is not a return value from the swal method.



Also, it would probably be good idea to use a library such as ng-sweet-alert to wrap calls to sweet alert to ensure that any changes you make in Sweet Alert callbacks are properly picked up by the angular lifecycle. If you check out the source for ng-sweet-alert, you'll see that the author wraps the calls to swal and the user's callback in $rootScope.$evalAsync, ensuring that angular updates when the calls and callbacks complete.



From a code style perspective, it would be better to put your logic into a service or factory for reuse throughout your codebase rather than just attaching it to $rootScope.


[#64566] Monday, October 26, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
isaacvalentinn

Total Points: 325
Total Questions: 120
Total Answers: 131

Location: North Korea
Member since Tue, Jun 16, 2020
4 Years ago
isaacvalentinn questions
Mon, Jan 18, 21, 00:00, 3 Years ago
Mon, Nov 23, 20, 00:00, 4 Years ago
Wed, Sep 23, 20, 00:00, 4 Years ago
;