多个查询,在同一个div中显示结果

问题描述 投票:0回答:2

单击“热门”时,如何用新查询(getPopular)的结果替换内容?

(v-for =“所有赌场中的赌场”需要改为显示:v-for =“getPopular中的赌场”)

<div @click="activate(1); getPopular();">Popular</div>
<div @click="activate(2); getNew();">New</div>

<div id="list" v-for="casino in allCasinos" :key="casino.name">
  <div v-if="$apollo.loading">Loading...</div>
  <div>{{ casino.name}}</div>
</div>

<script>
import gql from 'graphql-tag';
methods: {
  activate:function(el){
      this.active_el = el;
  },
},
apollo: {
  allCasinos: gql`{
    allCasinos(limit: 6) {
      name,
    }
  }`,
  getPopular: gql`{
    getPopular(limit: 6) {
      name,
    }
  }`,
  getNew gql`{
    getNew(limit: 6) {
      name,
    }
  }`,
</script>
vue.js vuejs2 graphql apollo vue-apollo
2个回答
1
投票

在这种情况下,没有理由使用单独的查询 - 使用filterlimit旁边)参数的一个常见查询。


UPDATE
casinos: gql`query casinos($filter: String!) {
    casinos(filter: $filter, limit: 6) {
        name
    }
}`,

0
投票

您可以定义一个本地数据属性casinos,它存储您要显示的当前赌场集。你可以在每个casinos处理程序中设置click的值。最后你可以在你的casinos中使用allCasinos而不是v-for

<div @click="activate(1); casinos = getPopular();">Popular</div>
<div @click="activate(2); casinos = getNew();">New</div>

<div id="list" v-for="casino in casinos" :key="casino.name">
  <div v-if="$apollo.loading">Loading...</div>
  <div>{{ casino.name}}</div>
</div>

<script>
import gql from 'graphql-tag';
data: function () {
  return {
    casinos: this.allCasinos
  }
},
© www.soinside.com 2019 - 2024. All rights reserved.