Angular Dart:路由路径的匹配规则 - 隐式后缀通配符?

时间:2014-01-30 17:22:00

标签: dart angular-routing angular-dart

考虑(摘自AngularDart tutorial):

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

网址如何与此类路径匹配?是否有隐式通配符后缀,如/add/*/add*?如果是这样,我如何才能/add完全匹配/add以避免与/address发生冲突?

2 个答案:

答案 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不匹配。