在 angular ui-router 中更改状态而不更改浏览器历史记录
Changing state without changing browser history in angular ui-router
假设我们有这样的逻辑:
- 从状态A,切换到状态B。
- 每当我们到达状态 B 时,应用程序总是通过调用
$state.go(stateC)
将我们重定向到状态 C
- 现在我们处于状态 C
我的问题是如何从状态 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.
假设我们有这样的逻辑:
- 从状态A,切换到状态B。
- 每当我们到达状态 B 时,应用程序总是通过调用
$state.go(stateC)
将我们重定向到状态 C
- 现在我们处于状态 C
我的问题是如何从状态 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, iffalse
will not. If string, must be"replace"
, which will update url and also replace last history record.