2016-08-02 13 views
0

私はこのようなコレクションを持っている:流星ブレイズの表示アレイ

enter image description here

私は例えばobject.questions.teemaを反復処理します。

Template.game.helpers({ 
    theGame: function() { 
     var theGame = Game.findOne({_id:"LhQmaZKW8eJNenyX9"}) 
     console.log(theGame) 
     return theGame 
    } 
}); 

とテンプレート::

<template name="game"> 

{{#with theGame}} 
    {{#each theGame.questions}} 
    {{teema}} 
    {{/each}} 
{{/with}} 
</template> 

しかし、それは仕事をdoesntの、テンプレートを使用して何が間違っている

私はヘルパーがありますか?

答えて

0

:それはあなたをできるようになります。

ポイントは、 'theGame'オブジェクトに#withブロック内でアクセスしたい[ゲーム]プロパティがないため、#withの中にゲームオブジェクトを取得しようとすると、未定義を返します。

<template name="game"> 
    {{#with theGame}} 
    {{#each questions}} 
     //Thie #each because you have nested array. As I can see in your console log. 
     {{#each this}} 
     {{teema}} 
     {{/each}} 
    {{/each}} 
    {{/with}} 
</template> 
0

theGame.questionsは、teemaキーを持つオブジェクトの配列の配列です(反復処理します)。だから、プロパティで最終的にオブジェクトに到達する前に、第2レベルの配列を繰り返し処理するか、その配列内の特定の項目を定義する必要があります。

たぶんのようなもの:

{{#with theGame}} 
    {{#each questions}} 
    {{#each this}} 
     {{this.teema}} 
    {{/each}} 
    {{/each}} 
{{/with}} 

しかし、それはあなたが最初の場所でこれらの2レベルの配列を持っている理由に依存します。

+0

したがって、このような何か: {{#with theGame}} {{ #eachのtheGame.questions}} {{ #eachのquestions.teema}} {{ ティーマ}} {{/それぞれ}} {{/ each}} {{/ with}} これはどちらでも動作しないようです。 – Villemh

+0

仮のコードで編集された答え。最初になぜそれらの2レベルアレイが必要かを確認してください。 – ghybs

+0

これは良い提案でしたが、2レベルの配列は必要ありませんでした。ありがとうございました。 – Villemh

0

{{teema}}とは何ですか?

あなたのconsole.logステートメントからわかるように、{{theGame.questions}}は別の配列を返します。しかし、その配列はオブジェクトを返します。これは、Blazeを使用してクエリを実行することは実際には困難です。

より良い解決策は、あなたのデータは、このような形をしているように、それを平らにするようになります:あなたは配列内のネストされた配列を持っていない

questions: [ 
    { 
     a: 'asdfkjah', 
     level: 'askdjfhal', 
     q: 'asdkfh', 
     teema: 'asdkfjh' 
     vaartus: 100 
    }, 
    { 
     ... 
    } 
] 

この方法です。

あなたが直接「theGame」オブジェクトにアクセスすることができますので、「theGame.questionsは#each」、#with内部で動作しません
{{#with theGame}} 
    {{#each theGame.questions}} 
    {{this.teema}} 
    {{/each}} 
{{/with}} 
関連する問題