Дюрандаль нулевой/пустой маршрут

У меня есть ситуация 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 }
])

где маршрутизатор успешно перейдет к маршруту '', но нулевой параметр даст ему указание просто очистить обработчик привязки маршрутизатора.


person Matthew James Davis    schedule 31.12.2013    source источник
comment
Возможно, вы захотите проверить id в canActivate и return true;, если он есть, и return {redirect: 'emptyIdRoute'}; в противном случае.   -  person RainerAtSpirit    schedule 31.12.2013
comment
или, что еще проще, было бы заменить null во втором примере на 'emptyIdRoute'. Проблема в том, что я действительно не хочу, чтобы пустое представление/модель плавало вокруг. Я ищу инструкцию, чтобы сказать маршрутизатору Durandal просто очистить контейнер маршрутизатора. Спасибо :)   -  person Matthew James Davis    schedule 31.12.2013


Ответы (1)


В настоящее время это не особенность Дюрандаля. Я добавил поддержку такого рода вещей в пулреквест, который вы можете найти здесь , если вы хотите добавить поддержку нулевых маршрутов в свое приложение.

person Matthew James Davis    schedule 31.12.2013