zatrzymaj nawigację angular-ui-router, aż obietnica zostanie rozwiązana

Chcę zapobiec migotaniu, które ma miejsce, gdy nastąpi przekroczenie limitu czasu na szynach, ale kątowy nie wie aż do następnego błędu autoryzacji z zasobu.

Zdarza się, że szablon jest renderowany, zdarzają się wywołania ajax dla zasobów, a następnie jesteśmy przekierowywani na szyny, aby się zalogować. Wolałbym zrobić ping do szyn na każdej zmianie stanu i jeśli sesja szyny wygasła, natychmiast przekieruję PRZED wyświetleniem szablonu.

ui-router ma rozwiązanie, które można umieścić na każdej trasie, ale wcale nie wydaje się to OSUSZONE.

Mam to. Ale obietnica nie zostanie rozwiązana, dopóki stan nie zostanie już przeniesiony.

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

    });

Jak mogę przerwać przejście stanu, zanim nowy szablon zostanie renderowany, w oparciu o wynik obietnicy?

questionAnswers(10)

yourAnswerToTheQuestion