Ui-Router $ state.go внутри $ on ('$ stateChangeStart') вызывает бесконечный цикл

Я пытаюсь ввести логин в способ навигации пользователя по приложению.

Я делаю вид, что перенаправляю пользователя на страницу, на которой он находился до перехода на страницу входа, если эта страница отвечает определенным требованиям

Предотвращение события от остановки $ stateChangeStart приводит к изменению состояния, как и ожидалось, но когда я запускаю $ state.go ('into_somewhere'), я вхожу в бесконечный цикл

Моя угловая версия 1.3.1, и UI-роутер является последним

.factory('RouteHistory', function ($rootScope,$log, $state, Auth, $urlRouter, $timeout) {

    // after the user enter a page
    var currentState = '';

    // when the user is trying to access a page that he has not permissions
    // or that requires the user to be logged in
    var pendingState = '';

    var isMenuTogglerVisible = false;
    var skipFromStateVal = true;

    $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){

      event.preventDefault();



      if (toState.name == 'login' && fromState.name != 'login'){
        $log.log('Ui-router: changing to login');
        // $urlRouter.sync();
        $state.go('login')
        //pendingState = fromState;
        //$log.log('Peding state updated to:' + pendingState.name );
        //$urlRouter.sync();
      }

      if (fromState.name == 'login' && Auth.isLoggedIn()) {
        $log.log('Ui-router: going from login');
        //$state.go(fromState.name);
        $timeout(function(){
          // $state.go('home', null, {/*reload: true, location: 'replace'*/});
          $state.go('browse-machine');
          //$urlRouter.sync();
        },2000)
      }



      $log.log({
        'toState': toState,
        'toParams': toParams,
        'fromState': fromState,
        'fromParams': fromParams
      })

    })


    return {

    };
  });

Ответы на вопрос(6)

Ваш ответ на вопрос