考虑以下层次结构路由的初始化(摘自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)));
虽然我知道子路径的路径是唯一的(从其祖先的路径构造),路由名称命名空间是否也是分层的,或者名称必须是唯一的?
答案 0 :(得分:2)
要求路线名称对于给定父母的所有直接子女都是唯一的。
行:
foo
bar
baz
qux
foo
bar
baz
不行:
foo
bar
bar
一般情况下,为了更好的可读性,建议在整个过程中使用唯一的路由名称,尽管这不是必需的。
引用路线时,必须从根指定路线foo.bar.baz
的完整路径,或提供相对路线锚router.go('foo', parameters: {}, startingFrom: bar)
非唯一路由名称可能导致问题的地方是查询参数,因为查询参数以路由名称(不是完整路径)为前缀,并且可能导致具有相同名称的路由之间的值泄漏({{ 1}})。也就是说,查询参数支持是一项正在进行中的工作,因此可能会发生变化。