考虑(摘自AngularDart tutorial):
router.root
..addRoute(
name: 'add',
path: '/add',
enter: view('view/addRecipe.html'))
网址如何与此类路径匹配?是否有隐式通配符后缀,如/add/*
或/add*
?如果是这样,我如何才能/add
完全匹配/add
以避免与/address
发生冲突?
答案 0 :(得分:4)
正确,UrlTemplate
执行天真的前缀匹配,因此/add
将匹配/address
。
如果您担心两条路径之间的冲突,其中一条路径恰好是另一条路径的前缀,那么正确的方法是将最具体的路径放在第一位。例如:
router.root
..addRoute(
name: 'address',
path: '/address',
enter: view('view/address.html'))
..addRoute(
name: 'add',
path: '/add',
enter: view('view/addRecipe.html'))
路由器按照指定的顺序匹配路由,因此它将选择匹配的第一个路由。这种方式/address
始终与address
路由匹配,/add
始终与add
路由匹配。
如果您担心/addFoo
与/add
的意外比赛,目前我担心没有简单的方法来确保这一点。如果您对此感到强烈,请file a feature request针对route_hierarchical包。
答案 1 :(得分:0)
如果您查看源代码(route_hierarchial包中的client.dart,而AngularDart又使用它),您会注意到该路径被用作映射的键。这意味着,如果您的路径设置为/add
,则与/address
不匹配。