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 {
};
});