1

splat ルートと一緒にルート パラメーターを使用しようとしています。これがシナリオです。

ナビゲーション メニューがあり、オプションの 1 つとしてウィザードがあります。ウィザードに移動するときに、作業中のオブジェクトの識別子を渡したいと考えています。同時に、ウィザードにはステップがあり、それらを子レベルのルーターで処理し、ルートの一部としてステップも渡します (*詳細)。

splat ルートは次のようになります。

   { route: 'offer/:offerId/*details', moduleId: 'offerbuilder/index', title: 'Offer Builder' }

子ルートは次のようになります。

[
   { route: 'parameters', moduleId: 'parameters', title: 'Parameters', nav: true },
   { route: 'cart', moduleId: 'cart', title: 'Cart', nav: true },
   { route: 'workspaces', moduleId: 'workspaces', title: 'Workspaces', nav: true }
]

ルートを適切に解決するためのルーターと子ルーターがありますが、問題は、子ルートのハッシュが渡されたパラメーター値を置き換えず、元のパターンを使用することです。言い換えれば、これはうまくいきます:

 http://oursite/main/#offer/123456789/parameters

ただし、ウィザードの手順の一部として生成されるハッシュは次のとおりです。

  http://oursite/main/#offer/:offerId/parameters

私の質問は、splat ルートはパラメーターの組み込みをサポートしていますか? そうでない場合、推奨される回避策は何ですか?

4

1 に答える 1

4

これは現在、ここで説明されている子ルーターの問題です。

解決策は、parentId を取得し、子ルーターのハッシュを手動で構築することです。

var childRouter = router.createChildRouter()
   .makeRelative({
      moduleId: 'employees/doctors',
      route: 'doctors/:id',
   });

return {
   router: childRouter,
   activate: function() {
      var doctorID = router.activeInstruction().params;

      childRouter.map([
         { route: '', moduleId: 'patients/index', hash: '#employees/doctors' + doctorID(), nav: true },
         { route: 'schedule', moduleId: 'schedule/index', hash: '#employees/doctors/' + doctorID() + '/schedule', nav: true }
      ]).buildNavigationModel();
   }
};
于 2013-08-22T18:41:12.187 に答える