3

考虑(摘自AngularDart 教程):

router.root
  ..addRoute(
      name: 'add',
      path: '/add',
      enter: view('view/addRecipe.html'))

URL 如何与这样的路径匹配?是否有隐含的通配符后缀 like /add/*or maybe /add*?如果是这样,我怎样才能/add完全匹配/add以避免与例如冲突 /address

4

2 回答 2

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路由。

如果您担心/addFooto/add的意外匹配,目前恐怕没有简单的方法可以确保这一点。如果您对此感觉强烈,请针对 route_hierarchical 包提交功能请求。

于 2014-01-31T14:52:47.963 回答
0

如果您查看源代码(route_hierarchial 包中的 client.dart,AngularDart 又使用它),您会注意到路径被用作地图的键。这意味着如果您的路径设置为/add它不会匹配/address

于 2014-01-31T12:32:50.760 回答