Как я могу сохранить $ location.hash () от добавления / сразу после #?

0

Когда я использую $ location.hash("section1"), URL-адрес заканчивается как http://thing/place #/section1. Когда я снова использую $ location.hash("section1"), URL-адрес становится http://thing/place #/section1 # section1. Это довольно удивительно. (Дальнейшее использование $ location.hash("section1") действует более или менее, как ожидалось, изменяя последнюю часть URL-адреса после второго #.)

Контекст: страница, которую я создаю, представляет собой одностраничное приложение в AngularJS, где несколько разделов страницы выложены как шаблоны; там находится контроллер верхнего уровня, а шаблоны скрыты/показаны на основе свойства, называемого "режим" в объеме этого контроллера. Я использую $ location.hash() довольно красиво: когда этот контроллер верхнего уровня загружается, он устанавливает режим в зависимости от содержимого $ location.hash(). (И там $ watch в режиме, который вызывает $ location.hash("modeName") при изменении режима.)

Как я могу убедить $ location.hash(), чтобы добавить только один URL-адрес, так что я могу использовать $ location.hash() для установки и получения текущего режима?

Теги:

1 ответ

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

Оказалось, что я не задал режим html5 в $ locationProvider. (Я был удивлен, я думал, что в режиме non-html5 всегда был режим hashbang, и когда я не видел взрыва перед хэшем, я предположил, что что-то еще происходит.) В качестве примечания, мои часы на $ location.hash() также вызвал бесконечный цикл (установите hash на "#thing", AngularJS устанавливает хеш в "#/вещь", повторите.), но это не было связано.

Для потомков способ установки режима html5 в службе определения местоположения состоит в том, чтобы добавить это к вашей инициализации:

Angular.module(....)
    ....controllers, services & squid....
    .config(function ($locationProvider) {
        $locationProvider.html5Mode(true);
    });

Ещё вопросы

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