带浏览器后退按钮的Aurelia setRoot?

带浏览器后退按钮的Aurelia setRoot?,aurelia,Aurelia,在我们正在使用的web应用程序中,我们有三个根 授权根 这将处理应用程序的前端和登录过程 取根 这用于查询数据库并获取用户的初始信息 有四种类型的用户需要略有不同的数据 管理根 这是授权和获取处理后管理区域的根目录 登录后它的工作原理是,应用程序将去获取引导代码,然后在所有管理路由中使用该代码 存在用户级别的层次结构; -超级管理员查看所有管理员 -管理员查看所有代理 -代理可以看到所有用户 -用户只看到他们的帐户 如果以超级管理员、管理员或代理身份登录,则需要向下导航到用户级别。

在我们正在使用的web应用程序中,我们有三个根

  • 授权根
    • 这将处理应用程序的前端和登录过程
  • 取根
    • 这用于查询数据库并获取用户的初始信息
    • 有四种类型的用户需要略有不同的数据
  • 管理根
    • 这是授权和获取处理后管理区域的根目录
  • 登录后它的工作原理是,应用程序将去获取引导代码,然后在所有管理路由中使用该代码

    存在用户级别的层次结构; -超级管理员查看所有管理员 -管理员查看所有代理 -代理可以看到所有用户 -用户只看到他们的帐户

    如果以
    超级管理员
    管理员
    代理
    身份登录,则需要向下导航到用户级别。 这是通过选择一个帐户来完成的,然后将重新运行fetch并获取给定用户级别上的下一级别帐户

    目前,我有它切换路线和更新的网址没有问题感谢德韦恩在这里

    问题是我需要保留浏览器历史记录,因此当单击“后退”按钮时,它需要“重新运行”该页面

    我有以下代码

    this.router.navigate(url, { replace: false, trigger: false });
    this.aurelia.setRoot(PLATFORM.moduleName('views/masters/fetch'));
    
    这非常有效,它交换了根目录,重新运行代码并正确地更新了地址栏,但是,当我单击“后退”按钮时,所有发生的事情都是URL更新,但页面不会“重新运行”

    我试着把这个放进去,但似乎什么也没做

      determineActivationStrategy() {
        return activationStrategy.replace;
      }
    

    有谁能解释一下这个问题,或者提供一个稍微不同的解决方案来解决这个问题吗?

    对我来说,您使用了错误的aurelia功能来实现您的逻辑。是的,setRoot可以在应用程序启动时动态加载不同的根,但这是在aurelia路由器维护的历史之前/之上。为什么不将setRoot修复为一个静态组件,然后使用顶级路由器动态加载应用程序的3个不同区域?@huocp我没有看到此消息,不幸的是,我们无法更新其工作方式。我目前有一个解决办法,似乎已经通过添加预授权路由和检查url参数暂时解决了这个问题