【发布时间】:2017-03-25 16:19:26
【问题描述】:
我有一个主应用路由器和多个子路由器。我希望在从父路由导航时指定要打开的子路由。
父路由器:
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 参数,如何选择直接从主应用程序路由器导航到学生个人资料屏幕?
【问题讨论】:
-
嗯,我想知道这是否是一个错误。
-
参见github.com/aurelia/router/issues/89 和github.com/aurelia/router/issues/90,后者听起来可能涉及到一个包,但我没有深入研究它。我认为子路由尚未加载,这就是为什么使用该名称不起作用
-
其实我可能误解了这个问题。如果您将其移动到主页(默认登录页面,学生主页)而不是从学生页面重定向,这是否有效?您也可以将其移动到 CanActivate 并返回 RedirectToRoute 而不是通过路由器导航
标签: aurelia