Я хотел отправить сообщение об успешном выполнении с одного контроллера на другой и вызвать функцию ошибки, чтобы отобразить сообщение об успешном выполнении. Но сообщение об успешном завершении не отображается из-за перенаправления. Оно работает в том же сценарии страницы, но не тогда, когда я хотел перенаправить. . из a.js tp b.js Я пытаюсь выполнить этот сценарий

A.js

if(status == 0){
 $state.go('b');
 $rootScope.$emit('aSaySuccess');
}

B.html

<px-alert type="message.type" messages="message.content" 
red-warning="flag" modal="message.modal" modal="message.title"></px-alert>

B.Js

function openTheError() {
        $scope.flag = true;
        $scope.message = {
          content: [{
            title: '',
            msg: 'Succcess'
          }],
          type: 'success'
        };
        };

$rootScope.$on('aSaySuccess',function(){
          openTheError();
        });
0
Nicoleta Wilskon 7 Мар 2019 в 09:00

1 ответ

Лучший ответ
  1. вы можете передать параметр $state.go("b", { isSuccess: true });, как прокомментировал Самир. Вы можете сделать так, чтобы параметр не отображался в URL-адресе.

  2. Состояние go является асинхронным, но оно возвращает обещание, которое разрешается при переходе.

$state.go('b').then(function() {
   $timeout(function() { $rootScope.$emit('aSaySuccess') }, 0); // Not sure but probably you need another timeout here
 });
1
Petr Averyanov 7 Мар 2019 в 11:44