現在のページの子が表示されていない場合、ページを最初の子に自動的に再ルーティングすることは可能ですか? シナリオは、一連のタブ付きコンテンツ領域を構築しており、Knockout と Pager.js を介してルーティングを制御しているというものです。私が望むのは、1 つのタブ コンテンツ領域に子タブがある場合、その最初の子をアクティブとして表示するようにルートが自動的に調整されることです。最初の子が常に同じであることを保証できないため、その子ページに「開始」ロールを設定することはできません。
アーキテクチャを示す基本的なフィドルを作成しました。
<div id="myApp">
<div data-bind="page: { id: 'start', role: 'start' }">
<ul class="nav nav-tabs" data-bind="foreach: $page.children">
<li data-bind="css: {active: isVisible}"><a data-bind="text: $data.val('title'), page-href: $data"></a></li>
</ul>
<div data-bind="page: { id: 'page-one', title: 'Page One' }">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Earum, quae totam illum eaque reiciendis incidunt tempore alias a possimus laboriosam dolorum officia assumenda fugit quo tenetur voluptas recusandae labore culpa.</p>
</div>
<div data-bind="page: { id: 'page-two', title: 'Page Two' }">
<p>Suscipit, quibusdam, ex rerum quae minus ullam esse aliquam non nihil officia! Doloribus expedita veritatis porro quae quos ad ex dolorum minus temporibus facilis. Quia, ipsum officia ullam perferendis minima?</p>
</div>
<div data-bind="page: { id: 'page-three', title: 'Page Three' }">
<p>Tempora, similique laborum quas eos ullam sit consequatur tenetur corrupti quod dolore! Porro, ex, architecto, pariatur perspiciatis a itaque velit illo autem rem nihil error minima minus alias nostrum enim?</p>
</div>
<div data-bind="page: { id: 'page-four', title: 'Page Four' }">
<p>Doloribus, dolore, eligendi, vitae vero fugiat accusantium ex error eum qui enim molestiae labore dignissimos aperiam quis suscipit placeat unde consequatur ipsum eos in sed dolorem officia consequuntur nihil mollitia.</p>
</div>
<div data-bind="page: { id: 'page-five', title: 'Page Five' }">
<p>Dolor, quo quis voluptates suscipit velit harum totam officiis quisquam quia perspiciatis amet aspernatur tempore magnam. Eos, in, vel similique temporibus dolores animi neque delectus sunt blanditiis voluptatem nisi cum!</p>
</div>
</div>
結果は、「page-one」のルート ID を持つ子ページに自動的にルーティングされるはずです。