Aurelia seroot在主页中工作,但在子页面中不起作用

Aurelia setRoot works when in homepage but not in a child page

本文关键字:不起作用 工作 seroot 主页 Aurelia      更新时间:2023-09-26

摘要:
作品
1)登录
2)看到主页test1按钮和注销按钮
3)按注销
4)退出登录,进入登录页面

不工作
1)登录
2)看到主页test1按钮和注销按钮
3)按test1
4)被带到test1页
5)按注销

ERROR: Route not found:/test1

我已经把我的代码减少到我正在挣扎的位,并制作了一个plunker,然而plunker不喜欢我正在使用的注入标签,因此不渲染。你仍然可以看到代码布局(如果有人能解决注入问题,那将是了不起的)。
砰砰作响:http://embed.plnkr.co/V5IoGqDfmo1djd3kW6bZ/

这个想法是入口模块有一个只有两条路由的路由器-登录和密码重置(将密码重置从plunker中取出作为无关的)。当用户登录时,我们将root设置为应用,它有另一个路由器,只有登录的人才能访问。

一旦登录,按下注销按钮将破坏会话并将根重置为入口。

然而,如果用户登录,点击应用路由器中的一个模块(例如test1),然后点击退出,我们会得到错误: error [app-router] error: Route not found:/test1

我试过:
1)在设置根节点之前重置路由器(即this.router.reset())
2)在设置为root之前导航到home(即this.router.navigate("))
3)这里建议的答案:
复位根时Aurelia路由器不工作
4)这里建议的答案:
使用seroot切换到其他应用程序时清除路由历史记录
任何建议将是感激的,我很高兴重构代码,如果它根本不会工作。

我不确定,但我认为这是一个错误,在过去被修复,但由于某种原因,它现在回来了。我去调查一下。

作为一种解决方案,您可以在两个路由器中使用mapUnknownRoutes来将用户重定向到所需的路由。例如:

登录路由器

configureRouter(config, router) {
      config.title = "Super Secret Project";
      config.map([
          { route: ["","login"], name: 'login', moduleId: "./login", nav: true, title: "Beginscherm" },
      ]);
      this.router = router;     
      //default route, to avoid the "route not found error"
      config.mapUnknownRoutes(instruction => {
        return './login';
      });
  }
授权路由器

configureRouter(config, router) {
      config.title = "Super Secret Project";
      config.map([
          { route: [ '', 'screen-1'], moduleId: "./screen-1", nav: true, title: "Beginscherm" },
          { route: 'screen-2', name:'screen-2', moduleId: "./screen-2", nav: true, title: "Beginscherm" }
      ]);
      //default route, to avoid "route not found" error
      config.mapUnknownRoutes(instruction => {
        return './screen-1';
      });
      this.router = router;        
  }

运行示例https://gist.run/?id=c3990aa3a5cbe22dc05bce2fdda0269a

请不要使用Plunker,它很慢。使用gistron代替:)

相关文章: