Цель: я хочу использовать преимущества разделения и инкапсуляции при использовании дочерних маршрутизаторов для организации маршрутов по важным функциональным областям приложения. Однако я хочу, чтобы эти маршруты обрабатывались и составлялись привязкой окна просмотра родительского маршрутизатора. то есть
<div id="parentRouterViewport" data-bind="router: { cacheViews: true }"><div>
До сих пор все, что я пробовал, включая звонки на родительский маршрутизатор для делегирования маршрута (в качестве эксперимента), не увенчалось успехом. Заставляет меня задуматься, возможно ли это вообще.
Для краткости я включаю только критически важные разделы кода для маршрутизации.
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 (дочерний модуль маршрутизации)
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
};
});
Это работает только в том случае, если я помещаю привязку окна просмотра маршрутизатора в соответствующее представление index.html. Однако это не то, что мне нужно, основываясь на макете css и внешнем виде страницы, которые я пытаюсь разработать. Все должно быть представлено в виде панели и заменено на другую панель всякий раз, когда выполняется маршрут. В настоящее время этот подход будет иметь две постоянно открытые панели. Взгляните на фото ниже, чтобы лучше понять, что я имею в виду.