$ location.path () возвращает неправильное значение

0

У меня есть Угловое приложение, которое разделено на несколько небольших приложений. Система работает довольно просто: пользователь входит в систему, затем он может выбрать, какое суб-приложение он хочет использовать.

Я бы хотел отобразить имя приложения в заголовке. В .run у меня это на $rootscope. Причина, по которой я здесь говорю, проста: пользователь может нормально использовать приложение, но он также может решить только использовать F5 для обновления страницы. Таким образом, я могу решить по URL-адресу, приложение которого работает.

$rootScope.$on( '$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
               // bunch of other code
                            var path = $location.path();
                            console.log($location);
                            if (path.indexOf("pricelist") > -1) {
                                authentication.setApplication("PRICELIST");
                            } else {
                                authentication.setApplication("HUB");
                            }
                            $state.go(toState, toParams);
                        }
                    }
                });
            });

Если URL-адрес содержит "прейскурант", он должен установить имя приложения "PRICELIST". Однако этот оператор возвращает false и поэтому устанавливает неправильное имя.

После отладки я заметил что-то странное в $location: Изображение 174551

Как вы видите, есть два $$path: один с правильным URL-адресом и один с просто /. Правильный - тот, который содержит /pricelist, но $location.path() кажется, возвращает неверный.

Что здесь происходит? Что я делаю не так?

  • 0
    когда вы создали свой console.log ($ location), путь был «/», а когда вы открываете его, это живая версия объекта, поэтому между двумя он изменился. вы используете stateChangeStart, так что изменение еще не было сделано, поэтому
  • 0
    Но почему $ location также содержит правильный URL?
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Поскольку вы слушаете событие $stateChangeStart, путь $location.path() по-прежнему является текущим путем, а не тем путем, по которому он идет.

Вы должны проверить аргумент toState.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню