Я хочу предотвратить некоторое мерцание, которое происходит, когда rails разрабатывает таймаут, но angular не знает до следующей ошибки авторизации от ресурса.
Что происходит, так это то, что шаблон визуализируется, некоторые вызовы ajax для ресурсов происходят, а затем мы перенаправляемся на rails для входа в систему. Я предпочел бы делать ping для рельсов при каждом изменении состояния, и если сеанс rails истек, тогда я немедленно перенаправляю ПЕРЕД тем, как будет отображаться шаблон.
ui-router имеет решение, которое может быть помещено на каждый маршрут, но это вообще не выглядит СУХОЙ.
У меня это есть. Но обещание не разрешается, пока государство уже не перешло.
$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'
}
})
});
Как я могу прервать переход состояния, прежде чем новый шаблон будет визуализирован, на основе результата обещания?