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)

一意でないルート名が問題を引き起こす可能性のある場所の 1 つはクエリ パラメータです。これは、クエリ パラメータの前にルート名 (フル パスではない) が付けられ、同じ名前のルート間で値がリークする可能性があるためです ( /foo?foo.param1=value)。とはいえ、クエリ パラメーターのサポートは進行中の作業であるため、変更される可能性があります。

于 2014-01-31T15:31:32.050 に答える