我试图使用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
之类的路由也被路由?
答案 0 :(得分:4)
route-recognizer
的工作原理。一旦找到完全匹配的叶子路径,它就会停止查看URL的其余部分。相反,如果你有另一条路线#/players/foo
,那么#/players/extra
会给你一个错误Route not found: extra
。
考虑到这一点,您可以添加一个带子路径匹配器的附加路径配置来捕获额外的部分:
{ route: 'players/*path', redirect: 'players' }
然后,用户在#/players/
之后添加的任何内容都会被删除,而且他们仍然会在该页面上结束。
尽管有这种事情要小心,因为它会破坏你可能拥有的任何子路由,这可能不是用户期望的行为。即使在堆栈溢出处,您也可以在地址栏中添加/extra/stuff
,然后登陆同一页面。