Когда точно выполняется "onEnter"
Я ищу лучший способ перенаправить моих пользователей из формы входа / регистрации, если они уже прошли надлежащую аутентификацию (и наоборот)
Так что это хорошая идея сделать это на Enter? Будет ли эта функция выполняться перед соответствующими контроллерами? Пример:
...
.state('auth', {
templateUrl: "auth.html",
controller: 'PBAuthController as PBAuth',
onEnter: skipIfLoggedIn
})
...
function skipIfLoggedIn($q, $auth, $state) {
var deferred = $q.defer();
if ($auth.isAuthenticated()) {
$state.go('backend');
} else {
deferred.resolve();
}
return deferred.promise;
}
1 ответ
Решение
Я только что сделал быстрый тест и onEnter
срабатывает перед контроллером, однако, похоже, нет способа предотвратить создание экземпляра контроллера.
В любом случае, вот как я обработал перенаправления в onEnter
, Единственное, на что нужно обратить внимание - не прерывать переход текущего состояния. Вы делаете это, ожидая $state.transition
обещаю решить...
onEnter: function($state, $auth) {
return $auth.isAuthenticated() && $state.transition.then(function() {
return $state.go('backend');
});
}