Подтвердить что ты не робот

Настройка дочернего маршрутизатора для компоновки модулей в родительском маршрутизаторе viewport html binding

Цель: Я хочу, чтобы преимущества сегрегации и инкапсуляции в использовании дочерних маршрутизаторов для организации маршрутов по значительным областям функций приложения. Тем не менее, я хочу, чтобы эти маршруты обрабатывались и составлялись с помощью привязки представления родительского маршрутизатора. iee

<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 и просмотре страницы, которую я пытаюсь создать. Все должно быть представлено в виде панели и заменено на другую панель всякий раз, когда наносится маршрут. В настоящее время этот подход будет постоянно открываться двумя панелями. Взгляните на фотографию ниже, чтобы лучше понять, что я имею в виду.

Photo of the CSS layout issue described above

4b9b3361

Ответ 1

В нашей команде мы создали собственные "дочерние маршрутизаторы", используя переменные Knockout, чтобы отображать/скрывать подматрицы на основе нажатия кнопки вкладок. Одно из предостережений заключается в том, что вам нужно будет вызвать ваш активировать, деактивировать, composComplete и т.д. Из основного/родительского представления, чтобы заставить subView работать. Есть некоторые другие ошибки, но я решил, что дам вам это как вариант или другие, кто увидит этот вопрос позже.