2014-01-30 40 views

回答

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之间的意外匹配,此时恐怕没有简单的方法来确保这一点。如果您对route_hierarchical软件包感兴趣,请致电file a feature request

0

如果检查出(在route_hierarchial包,而这又是使用AngularDart client.dart)的源代码,你会发现路径被用作密钥到地图。这意味着,如果你的路径设置为/add它不会匹配/address