【发布时间】:2017-01-16 03:16:44
【问题描述】:
我有一个 Aurelia 应用程序,即父子路由器。家长:
{ name: 'group', route: 'group/:groupId', viewPorts: {
Filter: { moduleId: 'filter.js'},
Content: { moduleId: 'content.js' }
}}
子路由器设置完毕:
[
{ name: 'home', route: '' },
{ name: 'documents', route: 'documents' },
{ name: 'images', route: 'images' },
{ name: 'specs', route: 'specs' }
]
子路由器在content.js 中配置。我想实现,在父路由器中,我在没有指定子完整路径的情况下导航
router.navigateToRoute('group', { groupId: 12345 });
在子路由器中,这将在home 结束,我将在其中根据某些应用程序状态执行动态重定向。应该如何实现?到目前为止,我已经尝试过这些
RedirectToRoute:
activate(params: any, config: any, instruction: NavigationInstruction): any {
return new RedirectToRoute('pick one child route');
}
注入Router:
@inject(Router)
export class Home {
constructor(router: Router) {
this.router = router;
}
activate(params: any, config: any, instruction: NavigationInstruction): void {
this.router.navigateToRoute('pick one child route');
}
}
重定向/导航本身是正确的本地,但是(子)路由器的baseUrl 仍然指向旧的(父)路由,所以结果会不正确。 p>
例如:我们在一个页面上:group/98765/images,在父路由器中,我们导航:router.navigateToRoute('group', { groupId: 12345 });。正如预期的那样,我们最终会得到group/12345 和home 的activate 方法。
我们重定向到这里,比如说specs。但是,由于 baseUrl 已过时,我们最终将使用 group/98765/specs,而不是 group/12345/specs。
应该如何解决?
我已经看到子路由器baseUrl 的一些相关问题,建议在导航之前手动修复 为常量。但是,由于模板化路由(比本示例中显示的更复杂),这并不像将 baseUrl 设置为常量字符串那么简单。
【问题讨论】:
-
我认为您的示例不相关,因为您使用静态链接,没有动态重定向
标签: aurelia