目的: 子ルーターを利用してアプリの重要な機能領域ごとにルートを整理することの分離とカプセル化の利点が必要です。ただし、これらのルートを親ルーターのビューポート バインディングで処理および構成したいと考えています。すなわち
<div id="parentRouterViewport" data-bind="router: { cacheViews: true }"><div>
これまでのところ、(実験として)ルートを委任するために親ルーターにコールバックすることを含め、私が試みたすべてが失敗しました。これが可能かどうか疑問に思います。
簡潔にするために、ルーティングのミッション クリティカルなコード セクションを含めています。
shell.js
return {
router: router,
activate: function() {
return router.map([
{ route: 'App*splat', moduleId: 'app/home/viewmodels/index', title: 'Home', nav: true }
]).buildNavigationModel()
.mapUnknownRoutes('app/home/viewmodels/error')
.activate();
}
};
shell.html
<div id="content" data-bind="router: { cacheViews: true }"></div>
index.js (子ルーティング モジュール)
var childRouter = router.createChildRouter()
.makeRelative({
moduleId: 'app/home/viewmodels',
fromParent: true
}).map([
{ route: 'EligibiltySearch', moduleId: 'eligibilitySearch', title: 'Eligibility Search', nav: true }
]).buildNavigationModel();
return {
router: childRouter
};
});
これが機能する唯一の方法は、対応するindex.htmlビューにルーター ビューポート バインディングを配置することです。ただし、これは、私が設計しようとしている CSS レイアウトとページのルック アンド フィールに基づいて求めているものではありません。すべてをパネルとして表現し、ルートにヒットするたびに別のパネルに交換する必要があります。現在、このアプローチでは常に 2 つのパネルが開いています。私が言いたいことのより良い文脈については、下の写真を見てください。