Когда точно выполняется "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');
    });
}
Другие вопросы по тегам