Angularjs UI-Router,哈希更改无状态变化

时间:2018-07-02 14:20:07

标签: angularjs angular-ui-router

我们在页面上有一个手风琴,它设置了主题的哈希值,以允许进行深层链接。该页面在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); } })

1 个答案:

答案 0 :(得分:0)

我从您的问题中了解到,您有一个带角度Js的手风琴,当您尝试单击“手风琴”选项卡时,UI路由器会重新加载页面。

尝试替换数据目标中的href属性

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