Несколько окон просмотра с одним и тем же модулем в Aurelia

У меня есть шаблон приложения, подобный следующему:

<template>
    <require from='./templates/header'></require>
    <require from='./templates/navigation'></require>

    <header user.bind="user"></header>
    <navigation></navigation>

    <router-view name="heading"></router-view>

    <div class="page-container>
        <div class="page-content">
            <router-view class="content-wrapper"></router-view>
        </div>

        <div class="footer">
            Copyright etc.
        </div>
    </div>
</template>

Я настроил маршрутизатор на использование видовых экранов для двух элементов <router-view>. Однако я не хочу использовать 2 разных модуля. Я хочу использовать один и тот же модуль для обоих окон просмотра, только с другим видом. Идея состоит в том, что модуль управляет несколькими разделами на странице. Мне удалось сделать это, указав свойство представления в конфигурации видовых экранов следующим образом:

config.map([
    { 
        name: 'dashboard', 
        route: 'dashboard', 
        viewPorts: { 
            default: { moduleId: './views/dashboard' }, 
            heading: { moduleId: './views/dashboard', view: './views/heading.html' } 
        }, 
        nav: true, 
        title: 'Dashboard' 
    }
]);

Проблема в том, что модуль активируется дважды, что может привести к ненужной обработке, поскольку у меня уже есть вся необходимая информация с первого раза. Есть ли способ настроить окна просмотра для использования другого вида для одного и того же модуля (экземпляра)?


person Carvellis    schedule 21.10.2015    source источник


Ответы (1)


Все классы в Aurelia по умолчанию обрабатываются контейнером внедрения зависимостей Aurelia как синглтоны. С вашим примером кода ваши классы будут созданы только один раз, поэтому любой ваш код обработки в их конструкторах или событиях активации будет происходить только один раз.

person rwisch45    schedule 21.10.2015