我有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页 ,,但只是网址更改,不应该。
如何防止这种情况?任何帮助将不胜感激。
答案 0 :(得分:0)
对于变通方法,你可以做$ location.path($ urlRouter.location);当您中止转换以使状态具有相同的URL时,这甚至会保留浏览器历史记录。