У нас есть аккордеон на странице, который устанавливает хеши для тем, чтобы позволить глубокую связь. Страница работает на 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);
}
})