Вот как я бы структурировал ваше приложение:
На странице верхнего уровня:
{
route: '',
redirect: 'items'
},
{
route: 'items',
name: 'items',
moduleId: './items',
title: 'Items',
nav: true
}
На странице товаров:
{
route: '',
name: 'no-item-selected',
moduleId: './some-empty-view',
nav: false
},
{
route: ':id',
name: 'item',
moduleId: './item',
nav: false
}
В статьеpage:
{
route: '',
redirect: 'summary'
},
{
route: 'summary',
moduleId: './item-summary',
name: 'item-summary',
title: 'Summary',
nav: true
},
{
route: 'detail',
moduleId: './item-detail',
name: 'item-detail',
title: 'Detail',
nav: true
}
В самой модели представления элементов вы можете сохранить Router
, полученный при configureRouter
, а затем при activate()
установить заголовок соответственно, если хотите, так как "Items |Item | Detail ", вероятно, немного глупо (поэтому я оставил заголовок для страницы Item)
Вы также можете полностью опустить вложенный дочерний маршрутизатор на странице item
и просто иметь и summary
, и detail
там, показывая / скрывая их согласно некоторой другой логике.Хотя было бы неплохо иметь возможности навигации назад / вперед и иметь возможность напрямую ссылаться на что-то.
Оригинальный ответ (это касалось того, что оказалось опечаткой, но яоставлю это для контекста)
Измените свой маршрут с items:id
на items/:id
.По сути, каждый «сегмент» маршрута (будь то статический, необязательный, динамический) должен быть разделен косой чертой, или средство распознавания маршрута не отображает их правильно.
Вам не нужно создавать маршрутопционально с такой настройкой.В любом случае вы не будете выбирать элемент без идентификатора (и если вы создадите новый, вы просто передадите new
или что-то похожее в качестве идентификатора, чтобы ваш взгляд мог различаться)