如何让Aurelia完全匹配路线?

时间:2018-03-10 15:42:55

标签: javascript routing aurelia aurelia-router

我试图使用Aurelia创建一个简单的应用程序,我不喜欢我的路由最终匹配网址和额外的内容。

我的路由器配置是:

configureRouter(config, router) {
  config.title = 'Aurelia';
  config.map([
    { route: '', redirect: 'players' },
    { route: 'players', name: 'players', moduleId: 'components/players/players', nav: true, title: 'Players' }
  ]);
  this.router = router;
}

我只希望#/players路由到玩家组件。如何保持#/players/extra/url之类的路由也被路由?

1 个答案:

答案 0 :(得分:4)

route-recognizer的工作原理。一旦找到完全匹配的叶子路径,它就会停止查看URL的其余部分。相反,如果你有另一条路线#/players/foo,那么#/players/extra会给你一个错误Route not found: extra

考虑到这一点,您可以添加一个带子路径匹配器的附加路径配置来捕获额外的部分:

{ route: 'players/*path', redirect: 'players' }

然后,用户在#/players/之后添加的任何内容都会被删除,而且他们仍然会在该页面上结束。

尽管有这种事情要小心,因为它会破坏你可能拥有的任何子路由,这可能不是用户期望的行为。即使在堆栈溢出处,您也可以在地址栏中添加/extra/stuff,然后登陆同一页面。