2016-05-29 2 views
0

この「問題」に取り組む方法を私に教えてもらえませんか?私はJSの初心者です(+流星)ので、あなたにとっては非常に簡単かもしれません。私はレンダリングのためにhelpersblaze/spacebarsを使っています。私は、単純なヘルパー持っメテオ/ブレイズレンダリング:{{各}}が正しいデータを返さない(データコンテキスト)

:この時点で

Template.monitoring.helpers({ 

    'realtime': function(){ 
     return { 
      house: house.find({}), 
      neighbours: neighbours.find({}), 
     } 
    } // end of realtime 

}); // end of helpers 

を、すべてがOKです。私は必要なデータを取得することができます。問題は、私が望むようにレンダリングできないことです。私のtemplate以下。より正確には

<template name="monitoring"> 

    {{#each realtime.house}} 
    <div class="card red"> 
    SHOW STUFF ABOUT HOUSE 
    </div> 

    <div class="card blue"> 
     {{#each realtime.neighbours}} 
     SHOW STUFF ABOUT NEIGHBOURS OF THE SPECIFIC HOUSE 
     {{/each}} 
    </div> 

    {{/each}} -> end of each realtime.house 

</template> 

、私のテンプレートがレンダリングされるとき:

  • 赤カードの数=家屋の数=>完璧
  • それぞれレッドカードが家のデータが含まれています=>完璧

  • 青いカードの数=家の数=>完璧

  • 各青いカードには、のすべての近隣のデータ =>が含まれています。私が欲しいのは、特定の家に関する隣人のデータです。

正しい場所に正しいものを手に入れる方法はありますか? ありがとうございます。

答えて

0

あなたは2つのヘルパーが必要です:1つは家を返すもの、もう1つは家をそのコンテキストとして返すものです。スキーマがなければ、私は正確な答えを与えることはできませんが、それぞれの隣人が2つを結合するhouseIdプロパティを持っているとしましょう。

Template.monitoring.helpers({ 
    houses: function() { 
    return house.find(); 
    }, 

    neighbors: function() { 
    // Note the context here is a house because it's 
    // called from within an each. 
    return neighbours.find({ houseId: this._id }); 
    }, 
}); 

そして、あなたのテンプレートが(それぞれ青カードであるべきと仮定ネイバー)のようになります。それは完全に答える

<template name="monitoring"> 
    {{#each houses}} 
    <div class="card red"> 
     SHOW STUFF ABOUT HOUSE 
    </div> 
    {{#each neighbours}} 
     <div class="card blue"> 
     SHOW STUFF ABOUT NEIGHBOURS OF THE SPECIFIC HOUSE 
     </div> 
    {{/each}} 
    {{/each}} 
</template> 
+0

!そして魅力のように働く! – nerotulip

関連する問題