vue.js 动态添加计数器到v-data-table,带有两个按钮,用于递增和递减以及它们之间的数字

eqoofvh9  于 2023-01-21  发布在  Vue.js
关注(0)|答案(1)|浏览(212)

这里的问题是我从一个api获取数据,而这个数据没有像'count'这样的属性,所以我需要创建另一个数组并在v-for中使用它。
但是我想用计数器指定一个数字,当在每一行上单击add按钮时,我想将该对象添加到一个vuex状态,该状态等于计数器中的数字。
现在,当我单击递增按钮时,所有行上的所有计数列同时递增。
此外,此按钮位于不同的组件中,计数值将动态传递给此组件。
我试图添加td的所有行,但它在每一列递增。
先谢了。
下面是虚拟数据表:

<v-data-table dense :headers="dataTableHeaders" :items="filteredCoins" :items-per-page="5">

        <template v-slot:body="{ items }">
          <tbody>
            <tr v-for="coin in items" :key="coin.symbol">
              <td>{{ coin.symbol }}</td>
              <td>{{ coin.lastPrice }}</td>
              <td>
                <v-btn icon x-small text @click.stop="counter++">
                  <v-icon>mdi-arrow-up</v-icon>
                </v-btn>
                <v-counter :value="counter" />
                <v-btn icon x-small text @click.stop="counter--">
                  <v-icon>mdi-arrow-down</v-icon>
                </v-btn>
              </td>
              <td v-if="$store.state.portfolio.includes(coin)">
                <UpdateDeleteButtons :selected-coin="coin" :count="counter"/>
              </td>
              <td v-else>
                <AddButton :selected-coin="coin" :count="counter"/>
              </td>
            </tr>
          </tbody>
        </template>

      </v-data-table>

下面是AddButton组件:

<template>
  <v-btn x-small color="#0EDC79" @click="saveCoinToPortfolio()">
    Portfolyonuza Ekleyin
  </v-btn>
</template>

<script>
import { mapActions } from 'vuex';
export default {
  props: {
    selectedCoin: [],
    count: {
      type: Number,
      default: 1
    }
  },

  name: 'AddButton',

  methods: {
    ...mapActions(['saveCoinToPortfolio']),

    saveCoinToPortfolio() {
      this.$store.dispatch('saveCoinToPortfolio', {data: this.selectedCoin, count: this.count})
    }
  }
}
</script>
tmb3ates

tmb3ates1#

看起来您只有一个counter变量,它在所有行中使用。尝试将计数器添加到您的coin数据中,或者如果您不想更改这些数据,则添加一个单独的coinCounter对象,该对象通过硬币密钥(coin.symbol)存储计数器。它应该如下所示:

<v-btn icon x-small text @click.stop="coinCounter[coin.symbol]++">...

<v-btn icon x-small text @click.stop="coin.counter++">...

相关问题