.run(['$rootScope', '$state', 'Session', function ($rootScope, $state, Session) {
$rootScope.$on('$stateChangeStart', function (e, toState) {
console.log('inside .run')
if (toState.url == '/') {
e.preventDefault();
if (Session.user) { // and isAdmin == true
$state.go('admin')
} //if isAdmin == false redirect to chat
else {
$state.go('login')
}
} else if (!Session.user && toState.url != '/login') {
e.preventDefault();
$state.go('login')
}
return;
});
}])
Это мой .run модуль и в том, что мне нужно инициализировать isAdmin
переменную, которую я могу изменить мои контроллеры и проверить, действительно ли isAdmin is
в каждом изменении состояния и перенаправить на страницу admin
или chat
. Я попытался добавить инициализацию isAdmin
как $rootScope.isAdmin
в .run()
, но до того, как я могу исправить его значение в контроллере .run()
throws isAdmin
undefined error. Может ли кто-нибудь предложить обходной путь?Мне нужно получить доступ к переменной в .run() модуль в угловых и необходимо изменить значение этого в различных контроллерах
Заранее спасибо
Вы пытались позвонить в службу? –
Это действительно очень полезно для получения значения в каждом контроллере. –
У i-state есть 4 события перед загрузкой контроллера, вы должны проверить, установлена ли эта переменная или нет. –