ui-router浏览器后退按钮更改url甚至中止转换被调用

时间:2017-07-04 02:24:41

标签: javascript angularjs angularjs-directive angular-ui-router

我有2个app状态,我使用的是角度ui-router,下面是我的应用程序的伪代码,如果我使用ui-sref和app中的几个按钮导航,每件事情都可以。

$stateProvider.state('app.page1', {
            url: '/page1',
            templateUrl: 'page1.html',
        }).state('app.page2', {
            url: '/page2',
            templateUrl: 'page2.html',
        });

现在我必须执行一个条件,一旦用户处于page2视图/状态,他就不能回到page1

$transitions.onBefore({ from: 'app.page2.**' }, (trans) => {
    trans.abort();
});

如果我点击一些可导航到page1的按钮,即使这样也能正常工作,但是我的代码会阻止/中止转换。

但是当我点击浏览器的后退按钮时,网址会更改为 / app#/ page1 ,但状态会保持为第2页,但只是网址更改,不应该。

如何防止这种情况?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于变通方法,你可以做$ location.path($ urlRouter.location);当您中止转换以使状态具有相同的URL时,这甚至会保留浏览器历史记录。