ByKraB
@ByKraB

Как реализовать свой аналог confirm на angular?

Приветствую.

Мне нужен диалог, который работает аналогично вызову confirm. Т.е появляется диалог и выполнение кода останавливается до момента возвращения какого-либо результата.

Я попробовал использовать бесконечный цикл,
var confirmResult = -1;
$rootScope.$emit('showConfirmDialog','Are you sure?');
var deregFunc = $rootScope.$on('confirmDialogResult',function(e,result){
    //сообщение от диалога после клика на кнопку.
     confirmResult = result;
});

 while(confirmResult === -1){
 }

 alert(confirmResult);
 deregFunc();

но из-за этого все приложение зависает и кликнуть по кнопке в диалоге невозможно. Подскажите, как реализовать такое?
  • Вопрос задан
  • 2656 просмотров
Пригласить эксперта
Ответы на вопрос 2
@kartio
а есть смысл делать именно так?
можно же в обработчике подтверждения вызывать нужную функцию (в крайне случае делать эмит другого события), а все поля ввода блокировать через оверлэй над документом
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Делаете сервис, в нем уже все остальное. Что до "остановить все и вся" - тут зависит от того что именно вы хотите остановить. Обычно достаточно добавить оверлэй что бы предотвратить пользовательские действия, и можно еще добавить интерцептор для запросов, который будет вклиниваться в цепочку промисов и приостанавливать все запросы на необходимое вам время.

И да, бесконечный цикл это гениально... У вас все в одном потоке выполняется, и js, и отрисовка и обработка пользовательсого ввода и действий.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы