我们的示例应用程序的路由器配置定义如下。 " ID"用户详细信息路由中的参数可以在其值中包含#,例如/ users /#abc。我们可以从用户视图导航到用户详细信息视图,其中" id"是#abc没问题。但是,在刷新详细信息页面时,它会返回到用户视图。有没有办法逃避角色"#"?
export class App {
configureRouter(config, router) {
this.router = router;
config.title = 'Aurelia';
config.map([
{ route: ['', 'home'], name: 'home', moduleId: 'home/index' },
{ route: 'users', name: 'users', moduleId: 'users/index', nav: true },
{ route: 'users/:id', name: 'userDetail', moduleId: 'users/detail' }
]);
}
}
答案 0 :(得分:0)
由于模板参数未被编码/解码,因此它们非常严格。基本上,这意味着[a-zA-Z0-9_]
。请注意,这不是来自文档,而是我的观察。
如果您需要传递任意数据,只需使用查询参数即可。为此,请设置路由器,不要定义模板参数。
export class App {
configureRouter(config, router) {
this.router = router;
config.title = 'Aurelia';
config.map([
{ route: ['', 'home'], name: 'home', moduleId: 'home/index' },
{ route: 'users', name: 'users', moduleId: 'users/index', nav: true },
{ route: 'user', name: 'userDetail', moduleId: 'users/detail' }
]);
}
}
您不必更改任何其他内容(导航,激活参数等)。这样,在导航时,它将变为查询参数:
router.navigateToRoute('userDetail', { id: '#user123' });
这会产生网址:http://myserver/#user?id=%23user123
。