如何访问通过v-for中每个项目的方法返回的数据

时间:2017-07-26 19:39:21

标签: javascript firebase firebase-realtime-database vue.js vuejs2

我正在调用v-for中每个项目的方法。该方法返回正确的对象,但我想在.card的其他部分中访问该信息。例如让{{name}}反映从该方法返回的赞助商名称。通常我会让方法将数据推送到Vue数据,然后通过item访问。但对200多件商品来说,这样做会很奇怪。 (也许我错过了那种逻辑中的东西)

我有以下VueJS设置:

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"

1 个答案:

答案 0 :(得分:0)

没有真正的方法来制作一个临时变量&#34;在循环中,但您可以使用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);
}

并使用它,因为我使用了上面的别名。