pare a navegação do roteador angular-ui até que a promessa seja resolvida
Eu quero evitar alguma oscilação que acontece quando ocorre o tempo limite de rails, mas angular não sabe até o próximo erro de autorização de um recurso.
O que acontece é que o template é renderizado, algumas chamadas do ajax para que os recursos aconteçam e, em seguida, somos redirecionados para o rails planejado para o login. Eu prefiro fazer um ping para trilhos em todas as mudanças de estado e se a sessão de rails tiver expirado, então eu imediatamente redirecionarei ANTES que o modelo seja renderizado.
O ui-roteador tem resolução que pode ser colocada em todas as rotas, mas isso não parece nada seco.
O que eu tenho é isso. Mas a promessa não é resolvida até que o estado já esteja em transição.
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
//check that user is logged in
$http.get('/api/ping').success(function(data){
if (data.signed_in) {
$scope.signedIn = true;
} else {
window.location.href = '/rails/devise/login_path'
}
})
});
Como posso interromper a transição de estado, antes que o novo modelo seja renderizado, com base no resultado de uma promessa?