6

Ich bekomme "Route nicht gefunden", wenn ich versuche, Kind Routing zu verwenden. Um meine Grundlagen abzudecken, hier ist, wie das Routing in der Anwendung gestaltet ist.Route Nicht gefunden Fehler in Durandal Kind Route

Die main.js Datei enthält Routing für die Top-Navigation und erfolgt as-

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

I Karte Routen für die Fußzeile der Seite as-

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

Wenn ein Benutzer auf klickt Wenn Sie oben die "LOC" -Route erstellen, wird das linke Navigationsfenster in dieser Ansicht angezeigt. Diese Ansicht verwendet das Kind Routing und as-

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 standardmäßig auf die LCClientSearch Route und zeigt sie richtig zunächst JEDOCH aufgebaut, nichts rechts von diesem Punkt geschieht auf. Wenn der Benutzer auf LCClientSearh oder LCPending klickt, bekomme ich den Fehler "Route nicht gefunden".

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> 

Warum erhalte ich Route nicht gefunden?

+0

Ich denke, die ModuleId in Ihrem Kind-Router sollte "LOC" nicht Viewmodels sein. – nimgrg

+0

@nimgrg Ich habe die Modul-ID geändert, funktioniert aber immer noch nicht. Wenn die Seite zum ersten Mal geladen wird, wird die Ansicht LCClientSearch in Ordnung geladen. Es wird also die untergeordnete Route gefunden, wenn die Seite geladen wird. Es ist nur so, dass die Navigation nicht funktioniert, wenn Sie auf die untergeordneten Routenlinks klicken. – Chris

Antwort

6

Ich vermute, weil Ihre Elternroute kein splat - check out the documentation for child routers hat. Versuchen Sie, den Weg von der übergeordneten Ansicht Wechsel zu:

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

Und dann das Kind ändern Routen:

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

die dann die Routen LOC/LCClientSearch und LOC/LCPending jeweils übereinstimmen sollten.

+0

Danke! Du hast richtig vermutet. Der einzige andere Zusatz, den ich hinzufügen musste, war ein Hash im Elternteil (Hash: '#LOC'). – Chris

+0

Awesome, froh, ich könnte helfen :-) – gerrod

+0

Hallo @gerrod, Zunächst einmal vielen Dank für die Antwort. Ich habe das erfolgreich umgesetzt, es funktioniert wie ein Zauber! Aber leider, wenn ich versuche, zu der Elternroute (z. B. LOC) zu navigieren, wird es mir eine Nachricht in der Konsole anzeigen, z. B .: "Route nicht gefunden LOC". Jede Hilfe oder Anregung wäre zu schätzen. Vielen Dank ! :) –