AngularDart:路由名称的命名空间也是分层的吗?

时间:2014-01-30 16:53:15

标签: namespaces dart angular-routing angular-dart

考虑以下层次结构路由的初始化(摘自AngularDart tutorial):

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)));

虽然我知道子路径的路径是唯一的(从其祖先的路径构造),路由名称命名空间是否也是分层的,或者名称必须是唯一的?

1 个答案:

答案 0 :(得分:2)

要求路线名称对于给定父母的所有直接子女都是唯一的。

行:

foo
   bar
   baz
qux
  foo
     bar
     baz

不行:

foo
   bar
   bar

一般情况下,为了更好的可读性,建议在整个过程中使用唯一的路由名称,尽管这不是必需的。

引用路线时,必须从根指定路线foo.bar.baz的完整路径,或提供相对路线锚router.go('foo', parameters: {}, startingFrom: bar)

非唯一路由名称可能导致问题的地方是查询参数,因为查询参数以路由名称(不是完整路径)为前缀,并且可能导致具有相同名称的路由之间的值泄漏({{ 1}})。也就是说,查询参数支持是一项正在进行中的工作,因此可能会发生变化。