Сделать $location.path открытым в том же фрейме (target = _self)

В веб-приложении среднего стека с html5mode я определил следующий angular-ui-router

.state('addinHome', {
    url: '/addin/home',
    template: "home page"
})

Затем у меня есть еще одна страница https://localhost:3000/test/ с кнопкой <a href="/addin/home">button</a>. Также в его контроллере у меня есть

... ...
$location.path("/addin/home")
... ...

Обычно и $location.path, и кнопка ведут к https://localhost:3000/addin/home.

Теперь я добавляю следующие ссылки в index.html:

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
<script src="https://cdn.rawgit.com/devote/HTML5-History-API/master/history.js"></script>

Это мешает UI-маршрутизатору. Как следствие, и $location.path, и кнопка ведут к https://localhost:3000/test/#%2Faddin#%2Fhome, а это НЕ то, что мне нужно.

Я нашел решение для исправления кнопки: она использует <a href="addin/home" target="_self">button</a> (открывает связанный документ в том же фрейме, в котором он был нажат; см. здесь ).

Однако я не нашел решения для исправления $location.path("/addin/home"). Может ли кто-нибудь помочь?


person SoftTimur    schedule 15.07.2017    source источник
comment
Подожди, а что не так с $state.go('addinHome');?   -  person Alon Eitan    schedule 15.07.2017
comment
Это приводит к https://localhost:3000/test/#%2Faddin#%2Fhome как $location.path.   -  person SoftTimur    schedule 15.07.2017
comment
Зачем вам history.js, если маршрутизатор уже управляет историей?   -  person charlietfl    schedule 15.07.2017
comment
Я использовал html5mode, мне нужно history.js, чтобы избежать office.js полностью мешающего режима html5..   -  person SoftTimur    schedule 15.07.2017
comment
И вы добавили <base href="https://localhost:3000/" /> к <head> вашего html?   -  person Alon Eitan    schedule 15.07.2017
comment
У меня всегда есть <base href="/" /> в моем html. Смена на <base href="https://localhost:3000/" /> не помогла.   -  person SoftTimur    schedule 15.07.2017


Ответы (1)


  • Внедрить $window в качестве зависимости.

  • Попробуйте использовать $window.open(URL,"_self")

person Tejinder Singh    schedule 18.07.2017
comment
не забудьте ввести $window в качестве зависимости. - person Tejinder Singh; 18.07.2017