1

私が取り組んでいるデュランダル アプリケーションには、ユーザーを子ビューに移動させるタブが上部にあるページがあります。これらのタブは完全に機能し、次のように構成されています。

var childRouter = router.createChildRouter()
    .makeRelative({ moduleId: 'viewmodels/admin/sections', fromParent: true })
    .map([
        { route: [''], moduleId: 'index', title: 'Admin', nav: false },
        { route: 'settings', moduleId: 'settings', title: 'Settings', nav: true },
        ...
    ]).buildNavigationModel();

また、次のように、タブがクリックされるたびに実行されるナビゲーション関数もあります。

function navigate(route) {
    router.navigate(route.hash, { replace: true, trigger: true });
}

ページの URL が期待どおりに更新されます。デフォルトの管理子ビュー ( .../#admin) から [設定] タブに移動すると、URL が に更新されます.../#admin/settings。ただし、問題は、replace: true指定されているにもかかわらず、ビューの変更がブラウザーの履歴に保存されていないように見えることです。

ページで新しいブラウザー タブを開いてその#adminページに移動すると#admin/settings、ブラウザーは、これより前の唯一の履歴エントリが新しいタブを開いたものであると認識しているように見えます。

ブラウザーの履歴の欠如

その後、#adminセクションから完全に移動すると、最後に使用していたタブがブラウザーの履歴に記憶されているように見えますが (この場合、使用していた [設定] タブ)、以前にアクセスしたメイン#adminページのエントリはありません。

ブラウザの履歴、しかし十分ではありません

に行ってから#admin#admin/settings戻ると、#admin代わりにメインの管理ページへの参照のみが履歴に表示され、設定ページについては言及されません。

子ビューが変更されるたびに履歴が更新されないように、私が見逃したことを誰かが知っていますか?

4

1 に答える 1