Changing state without changing browser history in

2020-08-09 06:17发布

Assume that we have a logic like this:

  • From state A, change to state B.
  • Whenever we arrive to state B, the app always redirect us to state C by calling $state.go(stateC)
  • Now we are in state C

My question is how to go back to state A from state C (given the fact that state A can be any state we don't know at run-time, meaning user can access state B from any other states)

2条回答
We Are One
2楼-- · 2020-08-09 06:47

Use the location option with value "replace"...

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

See 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.

查看更多
我只想做你的唯一
3楼-- · 2020-08-09 06:51

You could keep track of visited states in a service and then just call $state.go on the previous state.

You can watch the state changes like so:

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

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

查看更多
登录 后发表回答