#angularjs #ionic-framework
#angularjs #ионный фреймворк
Вопрос:
Я пытаюсь перенаправить пользователя в определенное состояние при запуске angular, но он не переходит к login, когда, если это true, вместо этого он переходит к routState по умолчанию
.run(function ($ionicPlatform, $rootScope, $state) {
var authToken = window.localStorage.getItem('authToken')
var shouldChangePassword=window.localStorage.getItem('shouldChangePassword')
if (authToken == 'undefined' || shouldChangePassword == 'true') {
event.preventDefault();
$state.go('login');
return;
}
.config(
//my routes
.state('login', {
url: '/login',
templateUrl: 'templates/account_login.html',
controller: 'loginCtrl',
})
$urlRouterProvider.otherwise('/tab/category');
)
как я могу перенаправить на вход в систему и остановить переход приложения на маршрут по умолчанию
Комментарии:
1. вы проверили, соответствует ли условие в блоке if значению true?
2. да, условие верно, я проверил его с помощью открытых инструментов разработчика, он даже нажал $state.go(‘login’)
3. Он попадает в $state.go(‘login’)? Я думал, это то, чего ты хотел?
4. он попал в $state.go(‘login’); но он не переходит в это состояние, он переходит в $urlRouterProvider .в противном случае, что такое / tab / category’
5. событие не определено..
Ответ №1:
Вы могли бы попробовать подключиться к событию изменения состояния $stateChangeStart пользовательского интерфейса-маршрутизатора:
.run(function ($ionicPlatform, $rootScope, $state) {
$rootScope.$on('$stateChangeStart', function (event) {
var authToken = window.localStorage.getItem('authToken');
var shouldChangePassword=window.localStorage.getItem('shouldChangePassword');
if (!authToken || shouldChangePassword) {
event.preventDefault();
$state.go('login');
}
});
Но вы могли бы рассмотреть возможность перемещения authToken и shouldChangePassword в отдельную службу и считывать / устанавливать значение из / в эту службу вместо чтения из localstorage для каждого изменения состояния