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?

questionAnswers(10)

yourAnswerToTheQuestion