2015-06-17 20 views
20

Cel: Chcę, aby segregacja i zalety korzystania z ruterów podrzędnych były organizowane przez znaczące obszary funkcji aplikacji. Jednak chcę, aby te trasy były obsługiwane i składane przez powiązanie rzutni macierzystego routera. tjKonfiguracja rutera podrzędnego do komponowania modułów w rzutniku macierzystym wizjer html

<div id="parentRouterViewport" data-bind="router: { cacheViews: true }"><div>

Jak dotąd, wszystko próbowałem w tym wykonywanie połączeń z powrotem do routera macierzystego delegować trasy (jako eksperyment) zawiodły. Zastanawiam się, czy to nawet możliwe.

Dla zwięzłości, po prostu włączam sekcję kodów kryptograficznych misji dla routingu.

shell.js

return { 
     router: router, 
     activate: function() { 
      return router.map([ 
        { route: 'App*splat', moduleId: 'app/home/viewmodels/index', title: 'Home', nav: true } 
       ]).buildNavigationModel() 
       .mapUnknownRoutes('app/home/viewmodels/error') 
       .activate(); 
     } 
    }; 

shell.html

<div id="content" data-bind="router: { cacheViews: true }"></div> 

index.js (child moduł trasowania)

var childRouter = router.createChildRouter() 
     .makeRelative({ 
      moduleId: 'app/home/viewmodels', 
      fromParent: true 
     }).map([ 
      { route: 'EligibiltySearch', moduleId: 'eligibilitySearch', title: 'Eligibility Search', nav: true } 
     ]).buildNavigationModel(); 

    return { 
     router: childRouter 
    }; 
}); 

Jedyny sposób, w jaki to działa, to umieszczenie powiązania rzutni routera w moim odpowiednim widoku index.html. Jednak to nie jest to, po czym jestem oparty na układzie css oraz wygląd i wygląd strony, którą próbuję zaprojektować. Wszystko powinno być reprezentowane jako panel i zamieniane na inny panel za każdym razem, gdy trasa zostanie trafiona. Obecnie podejście to będzie miało stale otwarte dwa panele. Spójrz na poniższe zdjęcie, aby lepiej zrozumieć, co mam na myśli.

Photo of the CSS layout issue described above

+0

Czy próbujesz osiągnąć coś podobnego do tego [przykład Durandala] (http://dfiddle.github.io/dFiddle-2.0/#view-composition)? –

Odpowiedz

3

W naszym zespole stworzyliśmy nasze własne „dziecko” z wykorzystaniem routerów zmienne Knockout, aby pokazać/ukryć subviews oparte na przycisk Zakładka kliknięcia. Jednym zastrzeżeniem jest to, że będziesz musiał wywoływać aktywację, dezaktywację, compositionComplete itp. Z widoku głównego/nadrzędnego, aby uzyskać działanie subView. Jest kilka innych gier, ale pomyślałem, że dam ci to jako opcję lub innych, którzy zobaczą to pytanie później.