该应用程序有页面,X
, Y
和Z
。所以路由应该如下我进入页面X
然后选择一些详细信息,然后转到页面Y
然后选择更多详细信息,然后转到Z
。所以我想在访问 Z
后得到它一旦我单击窗口后退按钮,它应该转到页面 X
而不是页面 Y
。从 Y
出发时至Z
,我还尝试添加 { location: 'replace' }
在$state.go
但它不起作用。关于如何实现这一目标有什么想法吗?
谢谢
最佳答案
每次更改状态时,Angular 都会触发一个名为 $stateChangeStart
的事件,您可以利用它来发挥自己的优势。
在您的app.run
中,执行
app.run(function($rootScope,$state){
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
//Check if you're going from Z to Y
if(fromState.name === 'Z' && toState.name === 'Y'){
// if so, first stop the default behavior
event.preventDefault();
// then navigate to X
$state.go('X');
}
});
});
浏览器后退按钮本质上会触发相同的事件,因此您的问题将由此解决。
关于javascript - ui-router 改变之前的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36395326/