У меня есть ситуация master/detail. Я хотел бы использовать дочерний маршрутизатор, чтобы я мог (а) в полной мере использовать модуль истории и (б) инициировать входной переход только для ребенка. Вот моя установка:
Shell.js
// configure the shell router
router.map([{
...
},{
route: 'users*edit',
title: 'User List',
moduleId: 'viewmodels/users'
}]).activate();
Пользователи.js
this.router = router
.createChildRouter()
.makeRelative({ fromParent: true })
.map({ route: ':id', moduleId: 'viewmodels/edit' })
Когда я перехожу к #/users/5
, он работает блестяще. Однако, когда я перехожу к #/users
, как и ожидалось, он запускает маршрут, который не найден, отменяет навигацию и возвращает меня к #/users/5
. Как мне настроить это, чтобы отключить дочернее представление, когда маршрут не найден? В идеале я хотел бы иметь что-то вроде этого:
Пользователи.js
this.router = router
.createChildRouter()
.makeRelative({ fromParent: true })
.map([
{ route: ':id', moduleId: 'viewmodels/edit' },
{ route: '', moduleId: null }
])
где маршрутизатор успешно перейдет к маршруту '', но нулевой параметр даст ему указание просто очистить обработчик привязки маршрутизатора.
id
вcanActivate
иreturn true;
, если он есть, иreturn {redirect: 'emptyIdRoute'};
в противном случае. - person RainerAtSpirit   schedule 31.12.2013