2016-08-17 2 views
0

Я довольно новичок в Aurelia, и я пытаюсь понять, что является лучшим способом доступа и отображения данных на подстранице дочернего маршрутизатора. Данные хранятся в методе активации модели представления дочернего маршрутизатора. Моя проблема заключается в отображении данных при первом вводе или перезагрузке подстраницы дочернего маршрутизатора. К сожалению, он не работает. Как только я показываю подстраницу и перехожу к другой, все работает отлично.Aurelia: Как получить доступ к данным, хранящимся в модели представления дочернего маршрутизатора

ребенка-router.js

export class ChildRouter { 
    configureRouter(config, router) { 
     config.title = 'Child Router Title'; 
     config.map([ 
      { route: '', redirect: 'basics'}, 
      { route: ['basics', ''], name: 'basics', moduleId: './basics/basics',  nav: true, title: 'Basics' }, 
      { route: 'data',   name: 'data',  moduleId: './data/data',   nav: true, title: 'Data' } 
     ]); 
     this.router = router; 
    } 
    activate() { 
     this.var1 = "Var1. Only works when I reenter a subpage."; 
     this.var2 = "Var2. Only works when I reenter a subpage."; 
    } 
} 

ребенка router.html

<template> 
    <require from="../components/detail-navigation.html"></require> 
    <h2>${router.title}</h2> 
    <detail-navigation router.bind="router"></detail-navigation> 
    <div class="page-host"> 
    <router-view></router-view> 
    </div> 
</template> 

basics.html

<template> 
    <h2>Basics Title</h2> 
    <h3>${var1}</h3> 
</template> 

data.html

<template> 
    <h2>Data Title</h2> 
    <h3>${var2}</h3> 
</template> 

Надеюсь, вы понимаете мою проблему.

Here is a link to a test projekt on git.

Я с нетерпением жду любых рекомендаций.

+0

«ChildRouter» является нормальной страницей справа, с видом и моделью просмотра? Вы хотите отображать данные в вашем представлении «ChildRouter» или вы хотите отображать данные на странице, которую будет отображать маршрутизатор? – Randy

+0

Да точно. ChildRouter - обычная страница. Я хочу отобразить данные на странице (basics.html и data.html), которые маршрутизатор будет отображать с помощью вида маршрутизатора. –

ответ

1

Лично я бы порекомендовал вам не пытаться это сделать. Это вводит плотную связь между страницей ChildRouter и любыми страницами, отображаемыми в виде маршрутов на ней. Если вам нужны эти страницы, чтобы поговорить друг с другом, подумайте о том, чтобы использовать поставщик инъекций зависимостей, чтобы ввести экземпляр одного класса на каждую страницу и обмениваться информацией таким образом.

+0

Спасибо за помощь Эшли. Теперь он отлично работает с Injection Dependency. –

Смежные вопросы