В приложении 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
странице браузера, как представляется, думаю, что только запись истории до этого стало открытие новой вкладки:
Если я затем полностью удаляюсь от раздела #admin
, последняя вкладка, на которой я была, действительно запомнилась в истории браузера (в этом случае вкладка «Настройки» была включена), но нет основной страницы, которую посетили заранее, для главной страницы #admin
:
Если я иду от #admin
к #admin/settings
, а затем обратно в #admin
я вместо того, чтобы только увидеть ссылку на главной странице администрирования в истории, и не упоминается на странице настроек.
Кто-нибудь знает, что я пропустил, что предотвращает обновление истории при каждом изменении вида ребенка?