Я получаю бесконечный цикл для этого кода:Угловая щ-маршрутизатор бесконечный цикл, когда urlRouteProvider.otherwise установлен
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
var isLoggedIn = (authService.authentication && authService.authentication.isAuth);
if (isLoggedIn) {
//if user is logged and tries to access login page, prevent it
if (toState.name === 'app.login') {
event.preventDefault();
return fromState;
}
} else {
if (toState.name !== 'app.login') {
event.preventDefault();
$state.go('app.login');
return;
}
}
});
У меня также есть этот набор:
function config($stateProvider, $urlRouterProvider, $ocLazyLoadProvider) {
$urlRouterProvider.otherwise('/main');
$stateProvider
.state('app', {
abstract: true,
url: '',
controller: 'mainCtrl',
controllerAs: 'mainCtrl',
template:'<div ui-view></div>'
})
.state('app.login', {
url: '/logn'
controller: 'loginCtrl',
controllerAs: 'loginCtrl',
templateUrl: 'app/security/login.html'
})
.state('app.main', {
url: '/main'
controller: 'mainCtrl',
controllerAs: 'mainCtrl',
templateUrl: 'app/main.html'
})
...
}
Теперь я получение бесконечного цикла дайджеста, когда пользователь входит на сайт и должен быть аутентифицирован. Это выглядит следующим образом:
- Пользователь вводит адрес, а именно: http://localhost
- маршрут по умолчанию (иначе) пожаров и reddirects пользователю http://localhost/#/main
- $ OnStateChangeStart пожаров (для app.main) и протестировать, если пользователь вошел в систему, если нет, то запретить перенаправление по умолчанию в конец события «app.login ';
- $ OnstateChangeStart пожаров (для app.login) и испытания, если toState.name не app.login', если это так, то нет необходимости перенаправлять так вернуться.
- Не знаю, почему, но тогда $ OnStateChangeStart срабатывает снова, но для app.main. end it lops снова и снова.
Пожалуйста, помогите.
Эй, я недавно столкнулся с подобной проблемой, и мне пришлось изменить свое объявление иначе, как это было в ответе на это сообщение SO (дайте мне знать, если это поможет): http: // stackoverflow. com/questions/26181141/angularjs-ui-router-other-to-state-вместо-url –
Кажется, что это ответ. Будет проверять немного больше, а затем принять. – Luka