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

使用setRoot切换到其他应用程序时,Aurelia清除路由历史记录,aurelia,Aurelia,即使在使用setRoot()之后,Aurelia路由器也会记住我上一次访问的页面,它会将我重定向到该页面,即使我想再次访问主应用程序页面 我将尝试在用例中解释它。 我有两个应用程序:login和app。 我登录loginapp并被重定向到app。 我在app上导航到/securedPage,然后继续注销并再次被重定向到login。 我与另一个用户在login上登录,然后我被重定向到app/securedPage 我想要并且应该被重定向到只app 使用setRoot()在应用程序之间切换时,如何清

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

我将尝试在用例中解释它。 我有两个应用程序:
login
app
。 我登录
login
app并被重定向到
app
。 我在
app
上导航到
/securedPage
,然后继续注销并再次被重定向到
login
。 我与另一个用户在
login
上登录,然后我被重定向到
app/securedPage
我想要并且应该被重定向到只
app

使用setRoot()在应用程序之间切换时,如何清除路由历史记录?

您尝试过吗

this.router.deactivate();
this.router.reset();
this.app.setRoot('app');

这并不漂亮,但这对我来说很有帮助:

router.navigate("/");
aurelia.setRoot("login")

想帮忙,最近得到了这个工作和以上的建议几乎工作,但他们缺少一些部分。在这篇文章中,奥雷莉亚(艾森伯格)的创作者提出了一个建议:

因此,要切换应用程序根目录,请执行以下操作:

    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(“/”)会导致问题,尤其是在多次切换应用程序根目录时

因此,请确保添加:

     ... { replace: true, trigger: false });

我没有,但我有一种感觉,这可能会奏效。我可能在不久的将来尝试一下,谢谢@Travo这是正确的解决方案,应该是公认的答案。请注意,这需要在
AppRouter
上调用(
deactivate()
在子路由器上不存在,并且在这些子路由器上也无法正常工作)。谢谢你的确认,谢谢。这是现在公认的答案。你说的一切都是真的,我也测试过了。这对我来说也很有效,但我不得不在
setRoot
之后再添加一行:
This.deactivate()
。这是由于以下问题导致无限次重新加载: