假设我们有以下逻辑:
- 从状态A,转移到状态B。
- 每当我们到达状态B时,应用程序总是通过调用
$state.go(stateC)
将我们重定向到状态C - 现在我们在状态C中
我的问题是如何从状态C回到状态A(考虑到状态A在运行时可以是任何状态,意味着用户可以从任何其他状态访问状态B)
假设我们有以下逻辑:
$state.go(stateC)
将我们重定向到状态C我的问题是如何从状态C回到状态A(考虑到状态A在运行时可以是任何状态,意味着用户可以从任何其他状态访问状态B)
使用值为"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=} - 如果为
true
,将更新地址栏中的URL;如果为false
,则不会更新。如果是字符串,则必须为"replace"
,这将更新URL并且替换最后一个历史记录。
您可以在服务中跟踪已访问的状态,然后只需调用 $state.go 返回到上一个状态。
您可以像下面这样观察状态变化:
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams){
// add fromState to history
});