AngularJS UI-Router 0.X вызывает ошибку при получении оператора if при начальной загрузке приложения - PullRequest
0 голосов
/ 25 июня 2018

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...