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

Changing state without changing browser history in angular ui-router

假设我们有这样的逻辑:

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

您可以跟踪服务中的已访问状态,然后只需对前一个状态调用 $state.go。

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

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

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

使用值为 "replace"...

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

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

location - {boolean=true|string=} - If true will update the url in the location bar, if false will not. If string, must be "replace", which will update url and also replace last history record.