Я использую UI-Router и проверяю существующий токен для каждого состояния, которое начинает меняться. Эта ошибка возникает только при первой загрузке страницы. Если я обновлю страницу, его уже нет.
Вот мой rootscope, который я считаю ошибкой:
.run(['$rootScope', '$location', '$state', '$http', '$window', 'APIROOT', function ($rootScope, $location, $state, $http, $window, APIROOT) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
var isLogin = toState.name === "login";
if (isLogin) {
return;
}
var userInfo = $window.sessionStorage.token;
if (!userInfo) {
event.preventDefault();
$state.go('login');
} else {
$http.get(APIROOT + 'check_token').then(function(resp){
return true;
}).then(function(err){
})
}
});
}]);
Мой контроллер:
angular.module('app')
.controller('AppCtrl', ['$http', '$scope', '$window', 'APIROOT', AppCtrl]);
function AppCtrl($http, $scope, $window, APIROOT) {
var date = new Date();
var year = date.getFullYear();
$scope.main = {
name: $window.sessionStorage.getItem('name'),
brand: 'Brand',
year: year
};
}
Первое решение, которое я нашел, - это изменить «$ stateChangeStart» на «$ stateChangeSuccess», но я хочу, чтобы оно проверялось, прежде чем оно будет успешно изменено.
Что я должен исправить?