使用setRoot切换到其他应用程序时,Aurelia清除路线历史记录

时间:2016-03-27 12:00:22

标签: aurelia aurelia-router

Aurelia路由器会记住我上次使用的页面,即使在使用setRoot()之后,它也会将我重定向到该页面,即使我想再次登陆主应用程序页面。

我会尝试在用例中解释它。 我有两个应用:loginapp。 我在login应用中登录并重定向到app。 我导航到/securedPage上的app,然后继续注销并再次重定向到login。 我使用login上的其他用户登录,然后重定向到app/securedPage 我想成为并且应该被重定向到app

如何在使用setRoot()切换应用时清除路线历史记录?

2 个答案:

答案 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');