2016-08-17 18 views
0

Aureliaの新機能です。子ルータのサブページにアクセスしてデータを表示する最良の方法を理解しようとしています。データは、子ルータのビューモデルのactivateメソッドに格納されます。私の問題は、子ルータのサブページを最初に入力したとき、またはリロードするときにデータを表示することです。残念ながら、それは動作していません。サブページを表示して別のページに移動するとすぐに、すべて正常に動作します。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

アシュリーにお手伝いいただきありがとうございます。 Dependency Injectionでうまく動作します。 –