我正在尝试使用 angularJS UI 路由。我有三个网页,客户端可以通过某些链接访问第一页,但如果网址附加了 token ,我将在 Controller 中执行 $state.go('second-page') 。 如果 token 为空,我将客户端保留在第一页上。但是我希望当客户端按下浏览器上的后退按钮时,客户端应该转到第一页。但这不会发生。
所以场景是
客户端通过链接来</p>
'#/form/calendar/:officeId/:token'
由于 token 不为空,我转换到没有 URL 的第二个页面,URL 现在变为
'#/form/'
但是当客户端按下后退按钮时,它会尝试转到
'#/form/calendar/:officeId/:token'
这会导致循环转换到第二页,并且客户端永远无法到达第一页。
请告知如何避免这种情况。
谢谢
最佳答案
路由器中没有任何东西是专门为此设计的,但您自己实现起来相当容易。路由器发布一个您可以监听的 $stateChangeStart
事件。在第二个触发器上,您只想禁止此重定向。或者只是在那里进行一次重定向:
var redirected = false;
$rootScope.$on('$stateChangeStart', function(e, to, toParams, from, fromParams) {
// Redirect the user but only once
if (!redirected && toState.whateverYouWantToCheck) {
e.preventDefault();
redirected = true;
$state.go(...);
}
});
这将允许您执行重定向,但只能执行一次。
关于javascript - Angular JS UI 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330405/