现在有一个购物车,利用computed计算每个商品的小计,当商品数量发生变化时自动计算小计
时间: 2024-05-15 13:18:00 浏览: 89
好的,这个问题涉及到Vue的computed属性的使用。你需要在Vue组件中定义computed属性,然后在视图绑定computed属性来实现自动计算每个商品的小计。
首先,你需要在Vue组件中定义购物车的数据模型,包括商品名称、价格、数量等信息。然后,你可以通过computed属性来计算每个商品的小计。具体的实现可以参考以下代码:
```
<template>
<div>
<table>
<thead>
<tr>
<th>商品</th>
<th>单价</th>
<th>数量</th>
<th>小计</th>
</tr>
</thead>
<tbody>
<tr v-for="item in cart" :key="item.id">
<td>{{ item.name }}</td>
<td>{{ item.price }}</td>
<td>
<input type="number" v-model="item.quantity" @input="updateTotal" />
</td>
<td>{{ item.quantity * item.price }}</td>
</tr>
</tbody>
</table>
<p>Total: {{ total }}</p>
</div>
</template>
<script>
export default {
data() {
return {
cart: [
{ id: 1, name: '商品1', price: 10, quantity: 1 },
{ id: 2, name: '商品2', price: 20, quantity: 2 },
{ id: 3, name: '商品3', price: 30, quantity: 1 },
],
}
},
computed: {
total() {
let result = 0
for (let item of this.cart) {
result += item.price * item.quantity
}
return result
},
},
methods: {
updateTotal() {
// do something when quantity changes
},
},
}
</script>
```
其中,computed属性total计算购物车中所有商品的小计之和,而updateTotal方法在商品数量变化时更新购物车的商品小计和总计。这样,当你在输入框中输入商品数量时,小计和总计会自动计算更新。
阅读全文