这里的问题是我从一个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>
1条答案
按热度按时间tmb3ates1#
看起来您只有一个
counter
变量,它在所有行中使用。尝试将计数器添加到您的coin
数据中,或者如果您不想更改这些数据,则添加一个单独的coinCounter
对象,该对象通过硬币密钥(coin.symbol
)存储计数器。它应该如下所示:或