Aurelia路由器会记住我上次使用的页面,即使在使用setRoot()之后,它也会将我重定向到该页面,即使我想再次登陆主应用程序页面。
我会尝试在用例中解释它。
我有两个应用:login
和app
。
我在login
应用中登录并重定向到app
。
我导航到/securedPage
上的app
,然后继续注销并再次重定向到login
。
我使用login
上的其他用户登录,然后重定向到app/securedPage
。
我想成为并且应该被重定向到app
。
如何在使用setRoot()切换应用时清除路线历史记录?
答案 0 :(得分:7)
想要帮忙,最近得到了这个工作,上面的建议几乎可行,但他们缺少一些部分。在这个帖子中,Aurelia(艾森伯格)的创作者提出了一个建议: https://github.com/aurelia/framework/issues/590
所以要切换app root,请执行以下操作:
this.router.navigate('/', { replace: true, trigger: false });
this.router.reset();
this.router.deactivate();
this.aurelia.setRoot('app');
在我的情况下,我实际上可以跳过重置和停用部分,然后执行
this.router.navigate('/', { replace: true, trigger: false });
但是,在没有替换和触发器部分的情况下执行此.router.navigate(' /')会导致问题,尤其是在多次切换应用程序root时。
因此请务必添加:
... { replace: true, trigger: false });
答案 1 :(得分:2)
this.router.deactivate();
this.router.reset();
this.app.setRoot('app');