6

Я получаю «маршрут не найден», когда я пытаюсь использовать маршрутизацию детей. Чтобы покрыть мои базы, вот как проектируется маршрутизация в приложении.Маршрут Не найдена ошибка в пути Durandal child

Файл main.js содержит маршрутизацию для верхней панели навигации и делается как-

    router.map([ 
         { route: 'LOC', moduleId: 'LOC', title: 'LC', nav: 3 } 
        ]); 

I карты маршрутов для колонтитула страницы

as-
 router.map('About', 'About', 'About', false); 
    router.map('Help', 'Help', 'Help', false); 

Когда пользователь нажимает на созданный выше маршрут «LOC», на этом экране отображается левый навигатор. Эта точка зрения использует маршрутизацию ребенка и настроить как-

var childRouter = router.createChildRouter() 
    .makeRelative({ 
     moduleId: 'viewmodels/', 
     fromParent: true 
    }).map([ 
         { route: '*LCClientSearch', moduleId: 'LCClientSearch', title: 'Create LC', type: 'intro', hash: '#LCClientSearch', nav: true }, 
         { route: '*LCPending', moduleId: 'LCPending', title: 'Pending LC', type: 'intro', hash: '#LCPending', nav: true } 

    ]).buildNavigationModel(); 

LOC значений по умолчанию LCClientSearch и отображает его правильно изначально, однако, ничего не происходит прямо с этого момента. Когда пользователь нажимает на LCClientSearh или LCPending, я получаю ошибку «route not found».

LOC view-

 <div class="span2 well"> 
    <ul class="nav nav-list"> 
     <li class="nav-header">Availability</li> 

     <!--ko foreach: availability--> 
     <li data-bind="css: { active: isActive }"> 
      <a data-bind="attr: { href: hash }, text: title"></a> 
     </li> 
     <!--/ko--> 

     <li class="nav-header">Manual Post</li> 


     <!--ko foreach: ManualPost--> 
     <li data-bind="css: { active: isActive }"> 
      <a data-bind="attr: { href: hash }, text: title"></a> 
     </li> 
     <!--/ko--> 
    </ul> 
</div> 

Почему я получаю маршрут не найден?

+0

Я думаю, что moduleId в вашем дочернем маршрутизаторе должен быть «LOC» не viewmodels. – nimgrg

+0

@nimgrg Я изменил модуль, но все равно не работает. Когда страница сначала загружается, она фактически загружает представление LCClientSearch в порядке. Таким образом, он находит дочерний маршрут при загрузке страницы, просто навигация не работает при нажатии на ссылки дочернего маршрута. – Chris

ответ

6

Я подозреваю, что ваш родительский маршрут не имеет знака - check out the documentation for child routers. Попробуйте изменить маршрут из родительского вида на:

router.map([ 
    { route: 'LOC*details', moduleId: 'LOC', title: 'LC', nav: 3 } 
]); 

А затем изменить дочерние маршруты к:

[ 
    { route: 'LCClientSearch', moduleId: 'LCClientSearch', title: 'Create LC', type: 'intro', nav: true }, 
    { route: 'LCPending', moduleId: 'LCPending', title: 'Pending LC', type: 'intro', nav: true } 
] 

Это должно тогда соответствовать маршруты LOC/LCClientSearch и LOC/LCPending соответственно.

+0

Спасибо! Вы подозревали, что это правильно. Единственным добавлением, которое я должен был добавить, был хэш в родительском (хеш: '#LOC'). – Chris

+0

Удивительный, рад, что я мог бы помочь :-) – gerrod

+0

Привет, @gerrod, Прежде всего спасибо за ответ. Я успешно реализовал это, он работает как прелести! Но, к сожалению, когда я пытаюсь перейти к родительскому маршруту (например, LOC), он покажет мне сообщение в консоли, например: «Route Not Found LOC». Любая помощь или предложение были бы оценены. Благодаря ! :) –

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