JS:
app.run(['$rootScope', '$http', '$state', 'segment',
function run($rootScope, $http, $state, segment) {
let publicStates = [
'register',
'forgotPassword',
'passwordreset',
'login',
];
// Add JWT token as default auth header.
$http.defaults.headers.common.Authorization = 'Bearer ' +
window.localStorage.getItem('userToken');
// Check that user is logged in.
$rootScope.$on('$stateChangeStart', function(event, toState) {
$rootScope.$state = toState;
if (!window.localStorage.getItem('userToken') &&
publicStates.indexOf(toState.name) === -1) {
event.preventDefault();
$state.go('login');
}
if (publicStates.indexOf(toState.name) === -1) {
angular.element(document.querySelector('#gs')).css('visibility', 'visible');
} else {
angular.element(document.querySelector('#gs')).css('visibility', 'hidden');
}
});
$rootScope.$on('$stateChangeSuccess',
function(event, toState, toParams, fromState) {
segment.page(toState.name, {
path: toState.name,
referrer: fromState.url,
url: toState.url,
});
});
}]);
Ссылаясь на последний оператор if / else:
Все, что нужно сделать, это скрыть / показать элемент, если имя текущего маршрута отсутствует в массиве.Он отлично работает, но не запускается при начальной загрузке приложения.Примеры:
- Откройте приложение на странице, где элемент должен быть скрыт, но он показан.
- Обновите на той же странице, и элемент все еще отображается.
- Перейдите на другую страницу, и она отлично работает.
Как мне заставить этот конкретный оператор if / else запускаться каждый раз без ошибок, даже при обновлении страницы?
Sidenote: Я должен сделать это динамически таким образом, потому что рассматриваемый элемент динамически вставляется через зависимость JS.