O Ui-Router $ state.go dentro de $ on ('$ stateChangeStart') está causando um loop infinito
Estou tentando introduzir o login na maneira como o usuário navega pelo aplicativo.
Eu pretendo redirecionar o usuário para a página onde ele estava antes de navegar para a página de login, se essa página atender a requisitos específicos
Impedir o evento da parada $ stateChangeStart é a mudança de estado como esperado, mas quando executo o $ state.go ('into_somewhere'), insiro um loop infinito
Minha versão angular é 1.3.1 e o ui-router é o mais recente
.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 {
};
});