У меня классическая проблема, когда событие $locationChangeStart
срабатывает несколько раз. Я попытался использовать preventDefault
но я не могу справиться с этим.
Две проблемы: первый сценарий использует $location
а второй использует $state
:
$state.go('main')
, однако $locationChangeStart
запускается снова. Я не хочу этого поведения.$stateChangeStart
я в основном попадал в сценарий с infinite loop
. Это означает, что когда это событие срабатывает, я проверяю user authentication
. Если пользователь НЕ аутентифицирован, я перенаправляю его с помощью $state.go('login');
, Это вызывает бесконечный цикл.Здесь мои app.js для начинающих:
(function () {
'use strict';
angular.module('rage', [
'ui.router',
'ui.bootstrap',
'ui.dashboard',
'kendo.directives'
]).run(['$rootScope', '$state', '$location', 'userService', 'loginService', init]);
function init($rootScope, $state, $location, userService, loginService) {
$rootScope.rageSessionVars = {};
$rootScope.$state = $state;
$rootScope.isLoggedin = false; // just something to possibly use ???
$rootScope.$on('$locationChangeStart', function () {
var userToken = loginService.getUserCookie();
// check if cookie expired, then authenticate user !
if (userToken) {
if (!loginService.isUserCookieExpired(userToken)) {
if (loginService.authUser(userToken)) {
$state.go('main');
}
else {
$location.url('index.html#/?login'); // not authenticated !
}
}
}
else {
$state.go('login');
$location.url('index.html#/?login');
}
});
}
})();
Я также создал плункер для аналогичного сценария вчера, и просто изменил app.js
чтобы теперь включить событие locationChangeStart.
Интернет-плункер здесь: http://plnkr.co/edit/hsSrPqFp0hpJ4A8cTsVL?p=preview
Итог: я хотел бы подключиться к одному из этих событий для плавного входа пользователя/выхода из системы, но я всегда оказываюсь в ловушке этих угловых событий.
Заранее благодарю за советы экспертов.
привет, Боб
Используя угловой ui-маршрутизатор, используйте $stateChangeStart
и $stateChangeSuccess
для управления такими действиями, как аутентификация и ручная маршрутизация при изменении состояния.
$stateChangeStart
, но $stateChangeStart
с подобной ситуацией, когда он срабатывал несколько раз. Возможно, я должен вернуться к событиям $ stateChangeStart
$rootScope.$on('$locationChangeStart')
. Я, кажется, уже в неопределенном цикле. Боже мой - plnkr.co/edit/hsSrPqFp0hpJ4A8cTsVL токен возврата; };