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?