我正在尝试使用 Aurelia 制作一个简单的应用程序,但我不喜欢我的路由在末尾匹配带有额外内容的 url。
我的路由器配置是:
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
也被路由?
这就是route-recognizer
工作原理。一旦找到完全匹配的叶子路由,它就会停止查看 url 的其余部分。相比之下,#/players/foo
例如,如果您有另一条路线,那么#/players/extra
会给您一个 error Route not found: extra
。
考虑到这一点,您可以使用子路由匹配器添加额外的路由配置来捕获额外的部分:
{ route: 'players/*path', redirect: 'players' }
然后,用户添加的任何内容都#/players/
将被简单地删除,并且他们仍会在该页面上结束。
不过要小心这种事情,因为它会破坏您可能拥有的任何子路由,而且这可能不是用户期望的行为。即使在堆栈溢出时,您也可以添加/extra/stuff
地址栏中的内容,然后您就会进入同一页面。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句