2017-07-26 1 views
0

v-forの各項目からメソッドを呼び出しています。メソッドは適切なオブジェクトを返しますが、私は.cardの他の部分でその情報にアクセスしたいと思います。 {{name}}のようなものは、そのメソッドから返されたスポンサーの名前を反映します。通常、私はこのメソッドを使ってデータをVueデータにプッシュし、項目を介してアクセスします。しかし、これは200以上のアイテムには奇妙なことです。v-itemでメソッドごとに返されるデータにアクセスする方法

HTML::

<div v-for="deal in deals"> 
    <div class="card"> 
    <h3>{{deal.name}}</h3> 
    <p>{{ getSponsor(key) }}</p> 
    <p>{{sponsor.name}}</p> 
    </div> 
</div> 

JS:

firebase() { 
    return { 
    deals: db.ref('deals'), 
    businesses: db.ref('businesses') 
    } 
}, 
methods: { 
    getDealSponsor (key) { 
    db.ref('businesses').child(key).on('value', snap => { 
     return snap.val() 
    }) 
    } 
} 

JSON:

deals 
    -SomeDeal(Firebase Key) 
    name: "Some Deal" 
    provider: -SomeBusiness (Firebase KEy) 
businesses 
    -SomeBusiness (Firebase KEy) 
    name: "Some Business Name" 

を(おそらく、私はそのロジックで何かが欠けています)私は、次のVueJSを設定しています

+2

まず、すべてのデータを配列にロードしてから、データをループするのはなぜですか? – thanksd

+0

@thanksd私はすべての取引先配列を最初にループする必要がありますが、各取引は非常に大きなビジネス配列のスポンサーを持っています。基本的には、私は奇妙な質問をしています/トリックに参加して、「v-for」でループされた取引をスポンサーするビジネスを見つけてください。私はこれをもっと明白にするために私の質問を編集しました。 – Auzy

+0

ええ、でも、あなたはあなたのスクリプトのdeal配列をループして、すべてのスポンサーを配列にロードし、テンプレート内のスポンサーを参照することができます。 – thanksd

答えて

0

実際の方法はありませんそれはオーバールーピング何ループ内の「一時変数」を作る、しかし、あなたはのためv-forはエイリアスを作るという事実を使用することができます。コンポーネントにちょうど小道具である

<div v-for="deal in deals"> 
    <div class="card"> 
    <h3>{{deal.name}}</h3> 
    <template v-for="sponsor in [getSponsor(key)]"> 
     <p>{{ sponsor }}</p> 
     <p>{{sponsor.name}}</p> 
    </template> 
    </div> 
</div> 

key場合、あなたが計算に基づくことができますその上に:

sponsor() { 
    return getSponsor(key); 
} 

と私は上記の別名を使用してそれを使用します。

+0

'key'はコンポーネントの小道具として渡されますが、本質的にJSONの' -SomeDeal(Firebase Key) '部分です。しかし、これは素晴らしい、私はそれを試してみるよ! – Auzy

+0

私の(編集した)回答のように、簡単に計算することはできますか? –

+0

'method'が正しい' object'を返しますが、 'computed'から呼び出される' method'は 'undefined'という結果になるので、うまくいくようです。これを今見てください。 – Auzy

関連する問題