Aurelia Child Router重定向到特定路线

时间:2017-03-24 14:51:29

标签: aurelia aurelia-router

我有一个主App路由器和多个子路由器。我希望可以选择在从父路线导航时指定要打开的子路径。

父路由器:

configureRouter(config, router) {
  this.router = router;
  config.map([
    { route: ['','home'],      name: 'home',         moduleId: 'home/home' },
    { route: 'students/:id?',  name: 'students',     moduleId: 'students/students' },
    { route: 'staff',          name: 'staff',        moduleId: 'staff/staff' }
  ]);
}

学生儿童路由器:

export class Students {

  configureRouter(config, router) {
    config.map([
      { route: ['', 'home'],    name: 'student-home',           moduleId: 'students/students-home' },
      { route: 'list',          name: 'student-list',           moduleId: 'students/student-list' },
      { route: 'profile/:id',   name: 'student-profile',        moduleId: 'students/profile/overview' },
      { route: 'lockers',       name: 'student-lockers',        moduleId: 'students/lockers/home' }
    ]);
    this.router = router;
  }

  activate(params) {
    if (params.id) {
      console.log("Going straight to a student record for: ", params);
      this.router.navigateToRoute('student-profile', {id: params.id});
    }
  }
}

上述方案(在激活状态下使用navigateToRoute())不起作用,也不确定它是最好的方法。如果我包含id参数,如何可以选择直接从主应用程序路由器导航到学生档案屏幕?

2 个答案:

答案 0 :(得分:2)

我放弃了使用子路由器的命名路由。如果别人比我更了解他们,我会很好奇。但是,我发现只使用应用程序任何部分的URL路由就可以了。

swipeUp()

答案 1 :(得分:0)

您不需要在您的孩子路线中使用主动。 Aurelia路由器将自动进入您的子路线。

export class Students {

  configureRouter(config, router) {
    config.map([
      { route: ['', 'home'],    name: 'student-home',           moduleId: 'students/students-home' },
      { route: 'list',          name: 'student-list',           moduleId: 'students/student-list' },
      { route: 'profile/:id',   name: 'student-profile',        moduleId: 'students/profile/overview' },
      { route: 'lockers',       name: 'student-lockers',        moduleId: 'students/lockers/home' }
    ]);
    this.router = router;
  }
}

删除活动和您的模块"学生/个人资料/概述" 呼叫主动(params)让学生从api或你想要的任何东西你可以在这里使用被证明的参数。