2014-01-30 47 views
2

考慮分級路線以下初始化(摘自AngularDart tutorial):AngularDart:路由名稱的命名空間也是分層的嗎?

router.root 
    ..addRoute(
     name: 'add', 
     path: '/add', 
     enter: view('view/addRecipe.html')) 
    ..addRoute(
     name: 'recipe', 
     path: '/recipe/:recipeId', 
     mount: (Route route) => route 
      ..addRoute(
       name: 'view', 
       path: '/view', 
       enter: view('view/viewRecipe.html')) 
      ..addRoute(
       name: 'edit', 
       path: '/edit', 
       enter: view('view/editRecipe.html')) 
      ..addRoute(
       name: 'view_default', 
       defaultRoute: true, 
       enter: (_) => 
        router.go('view', {'recipeId': ':recipeId'}, 
         startingFrom: route, replace:true))); 

雖然我明白,一個subroute的路徑將是唯一的(從它的祖先的路徑正在建設中),是路由的名字命名空間層次或者名稱是否必須是唯一的?

回答

2

要求路線名稱對於給定家長的所有直接子女是唯一的。

OK:

foo 
    bar 
    baz 
qux 
    foo 
    bar 
    baz 

不正常:

foo 
    bar 
    bar 

一般我們建議在整個具有獨特的路線名稱,更好的可讀性,雖然它不是必需的。

在引用的路線,必須從根指定路由foo.bar.baz的完整路徑,或提供一個相對路徑錨router.go('foo', parameters: {}, startingFrom: bar)

一個地方非唯一的路徑名稱可能會導致問題與查詢參數,因爲查詢參數的前綴是路由名稱(不是完整路徑),並且可能導致具有相同名稱的路由之間的值泄漏(/foo?foo.param1=value)。也就是說,查詢參數支持是一種進行中的工作,所以事情可能會改變。