1

В приложении Durandal я работаю над страницей с вкладками вверху, которые приводят пользователя к дочерним представлениям. Эти вкладки работают отлично и настроены таким образом:Durandal child views не добавляет в историю и игнорируется при использовании кнопки возврата браузера

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 странице браузера, как представляется, думаю, что только запись истории до этого стало открытие новой вкладки:

Browser Lack of History

Если я затем полностью удаляюсь от раздела #admin, последняя вкладка, на которой я была, действительно запомнилась в истории браузера (в этом случае вкладка «Настройки» была включена), но нет основной страницы, которую посетили заранее, для главной страницы #admin :

Browser History, but not enough

Если я иду от #admin к #admin/settings, а затем обратно в #admin я вместо того, чтобы только увидеть ссылку на главной странице администрирования в истории, и не упоминается на странице настроек.

Кто-нибудь знает, что я пропустил, что предотвращает обновление истории при каждом изменении вида ребенка?

ответ

0

Я понял, что оставляя .mapUnknownRoutes() пустой, вместо того, чтобы определять, какие страницы на карте полностью устраняет проблему.

я делал это:

.mapUnknownRoutes('not-found', 'not-allowed') 

Теперь я делаю это:

.mapUnknownRoutes() 

Ничто не кажется, что сломаны (на 'not-found' и 'not-allowed' страницы все еще доступны), но теперь обратно кнопка работает по назначению.

Смежные вопросы