我们在页面上有一个手风琴,它为主题设置哈希,以允许深度链接。该页面在HTML5Mode的UI-Router上运行。单击主题时,Ui-路由器会重新加载解析。
我怎样才能阻止这种情况??
我试过: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);
}
})
我从你的问题中了解到,你有一个带有角度 Js 的手风琴,当你尝试单击手风琴选项卡时,UI 路由器会重新加载页面。
尝试从数据目标替换 href 属性
<li><a data-target="#switchTabs" data-toggle="tab">Tabs</a></li>