Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Продолжить переход при $stateChangeStart


Автор: chikistbuch 13.8.2016, 15:11
Всем привет и спасибо за ответ))))) Суть вопроса: при изменении state проверяю, есть ли в его настройках параметр needAuth. Ну это не важно, по умолчанию для всех стэйтов нужна авторизация пользователя. Далее через сервис checkAuthService.checkAuth() посылается запрос на сервер, который возвращает statusCode == 200 если пользователь авторизован. При этом делаю опять state.on на этот же state, но уже добавляю параметр skip, чтобы не делать опять проверки на авторизацию. И вот в этом случае он не переходит на указанный state. Все эти события происходят при нажатии кнопки Sign in. Если нажать кнопку второй раз, то все отлично. А вот и вопрос: почему не переходит на нужный state когда fromParams.skip == true?

Код

$rootScope.$on('$stateChangeStart',
            function (event, toState, toParams, fromState, fromParams) {
                //if variable "needAuth" is not defined in data state, then default value is true (needAuth = true)
                var needAuth = (toState.data === undefined || toState.data.needAuth === undefined) ? (true) : (false);

                if ((!fromParams.skip) && (needAuth)) {
                    event.preventDefault();

                    checkAuthService.checkAuth()
                        .then(function (response) {
                            if (response.data.statusCode == 200) {
                                fromParams.skip = true;
                                $state.go(toState.name, fromParams);
                            } else {
                                event.preventDefault();
                                $state.go('sign_in');
                            }
                        });
                }
            }
        );

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)