我们在页面上有一个手风琴,它设置了主题的哈希值,以允许进行深层链接。该页面在HTML5Mode的UI-Router上运行。单击主题时,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);
}
})
答案 0 :(得分:0)
我从您的问题中了解到,您有一个带角度Js的手风琴,当您尝试单击“手风琴”选项卡时,UI路由器会重新加载页面。
尝试替换数据目标中的href属性
<li><a data-target="#switchTabs" data-toggle="tab">Tabs</a></li>