私の Durandal アプリケーションでは、いくつかの親ルーターを構成しており、その一部には子ルーターが構成されています。問題は、ユーザーが異なる親ページまたは子ページ間を移動すると、既存のルートのバインディング ライフサイクルと共に、前のルートのバインディング ライフサイクルもトリガーされることです。
デュランダルのドキュメントに記載されているように、子ルーターは親ビュー モデル内で構成され、親ルーターはshell.tsで構成されます。
shell.ts のルーター データ バインド プロパティで、属性cacheViewsをfalseに、alwaysTriggerAttachをtrueに指定しました。
<div data-bind="router:{cacheViews: false, alwaysTriggerAttach: true}"></div>
期待される結果は、現在のルートが読み込まれているときに、前のルートのバインディング ライフサイクルが読み込まれないことです。たとえば、 #P2 から #P1/C1 に移動する場合、 #P2のバインディングライフサイクルは読み込まれません。