2014-01-30 59 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