2

考虑以下分层路由的初始化(摘自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)));

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

4

1 回答 1

2

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

好的:

foo
   bar
   baz
qux
  foo
     bar
     baz

不好:

foo
   bar
   bar

一般来说,建议使用唯一的路线名称,以提高可读性,尽管这不是必需的。

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

非唯一路由名称可能导致问题的一个地方是查询参数,因为查询参数以路由名称(不是完整路径)为前缀,并且可能导致具有相同名称的路由之间的值泄漏 ( /foo?foo.param1=value)。也就是说,查询参数支持正在进行中,所以事情可能会改变。

于 2014-01-31T15:31:32.050 回答