Angularjs UI-Router, без изменения состояния при изменении хэша - PullRequest
0 голосов
/ 02 июля 2018

У нас есть аккордеон на странице, который устанавливает хеши для тем, чтобы позволить глубокую связь. Страница работает на UI-Router в HTML5Mode. При нажатии на темы, Ui-Router перезагружает решает.
Как я могу это остановить ??
Я попробовал:
reloadOnsearch = false в определении состояния, который отлично работает с параметрами поиска, но все равно перезагружается при изменении хеша

if( $transition$.$to().name == $transition$.$from().name) {
    $transition$.abort() // or return false; // or preventDefault()
}

Что работает, но не помещает хеш в адрес, который явно необходим.
Как я могу остановить UI-Router от перезагрузки решений и запуска событий изменения состояния?

Обновление с дополнительной информацией:
Я пробовал оба,

<a ng-click="toggle();">

с $location.hash("value") и

<a href="#value">

с preventDefault() в контроллере, что (как и ожидалось) не имело значения.

Решение (надеюсь)
Кажется, это работает, если кто-то сталкивается с той же проблемой:
$transitions.onBefore({}, function( transition ) { if(transition.to().name == transition.from().name) { const paramsCopy = Object.assign({}, transition.params()); const stateService = transition.router.stateService; return stateService.target(transition.from(), paramsCopy); } })

1 Ответ

0 голосов
/ 02 июля 2018

Что я понимаю из вашего вопроса, так это то, что у вас есть аккордеон с угловыми буквами J, и маршрутизатор пользовательского интерфейса перезагружает страницу, когда вы пытаетесь щелкнуть по вкладкам аккордеона.

Попробуйте заменить атрибут href из data-target

<li><a data-target="#switchTabs" data-toggle="tab">Tabs</a></li>
...