#参数化路线中断Aurelia路线

时间:2017-02-09 18:14:49

标签: aurelia aurelia-router

我们的示例应用程序的路由器配置定义如下。 " 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' }
    ]);
  }
}

1 个答案:

答案 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