Похоже, вам нужно другое поведение в зависимости от того, нажимает ли пользователь кнопку подтверждения или кнопку отмены.
SweetAlert предоставляет ответ пользователя через параметр функции обратного вызова.
Вот пример прямо из 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");
}
}
);
В этом примере при нажатии кнопки подтверждения открывается новый SweetAlert, подтверждающий ваше действие, а при нажатии кнопки отмены открывается новый SweetAlert, отмечающий, что действие было отменено. Вы можете заменить эти вызовы любой функциональностью, которая вам нужна.
Поскольку эта библиотека использует асинхронные обратные вызовы, метод swal
не возвращает значения.
Кроме того, было бы неплохо использовать такую библиотеку, как ng-sweet- alert, чтобы обернуть вызовы в sweet alert, чтобы гарантировать, что любые изменения, которые вы делаете в обратных вызовах Sweet Alert, правильно подхватываются жизненным циклом angular. Если вы посмотрите исходный код ng-sweet-alert, вы увидите, что автор оборачивает вызовы swal
и обратный вызов пользователя в $rootScope.$evalAsync
, гарантируя, что angular обновится после завершения вызовов и обратных вызовов.
С точки зрения стиля кода было бы лучше поместить вашу логику в сервис или фабрику для повторного использования в вашей кодовой базе, а не просто прикреплять ее к $rootScope.
person
Jon Quarfoth
schedule
29.10.2015