Detenga la navegación del enrutador angular-ui hasta que se cumpla la promesa

Quiero evitar algunos parpadeos que ocurren cuando se producen tiempos de espera de rieles, pero angular no sabe hasta el próximo error de autorización de un recurso.

Lo que sucede es que la plantilla se procesa, algunas llamadas ajax de recursos ocurren y luego se nos redirige a los rieles para que inicien sesión. Preferiría hacer un ping a los rieles en cada cambio de estado y, si la sesión de los rieles ha caducado, redirigiré inmediatamente ANTES de que se genere la plantilla.

ui-router tiene una resolución que puede colocarse en cada ruta pero que no parece estar SECA en absoluto.

Lo que tengo es esto. Pero la promesa no se resuelve hasta que el estado ya está en transición.

$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'
          }
        })

    });

¿Cómo puedo interrumpir la transición de estado, antes de que se genere la nueva plantilla, en función del resultado de una promesa?

Respuestas a la pregunta(10)

Su respuesta a la pregunta