在角度ui-router中更改状态而不更改浏览器历史记录

时间:2016-09-13 02:52:57

标签: angularjs angular-ui-router browser-history

假设我们有这样的逻辑:

  • 从状态A,切换到状态B.
  • 每当我们到达州B时,应用程序总是通过致电hana::set
  • 将我们重定向到州C.
  • 现在我们处于州C

我的问题是如何从状态C回到状态A(假设状态A可以是我们在运行时不知道的任何状态,这意味着用户可以从任何其他状态访问状态B)

2 个答案:

答案 0 :(得分:30)

使用location选项,其值为"替换" ...

$state.go(stateC, null, {
    location: 'replace'
})

请参阅https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_go

  

位置 - {boolean = true | string =} - 如果true将更新位置栏中的网址,则false将不会。如果是字符串,则必须为"replace",这将更新网址并替换上次历史记录

答案 1 :(得分:-1)

您可以跟踪服务中的访问状态,然后在之前的状态中调用$ state.go。

你可以像这样观察状态变化:

$rootScope.$on('$stateChangeStart', 
function(event, toState, toParams, fromState, fromParams){ 
    // add fromState to history 
});

How to $watch state change of $stateProvider in AngularJS?