javascript - Angular JS UI 路由

标签 javascript angularjs angularjs-routing

我正在尝试使用 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/

相关文章:

javascript - 这个 href 是什么?

javascript - Angular ionic 徽章计数未更新

javascript - 使用 Protractor 测试时如何找到 ng-repeater 的最后一个元素

javascript - 如何使用 ui.router 和 ASP.NET MVC 在 AngularJS 中处理页面刷新

angularjs - 默认为 Angular UI-Router 嵌套 View

javascript - RequireJS 文本插件优化抛出错误

javascript - 如何在javascript中对两个对象的属性求和

javascript - 如何在调用 $ajax() 时启动函数?

css - 如何在 snap-content 元素中使用 angular-snap.js 创建修复 btn

javascript - Angular JS 深度链接将刷新 View