【发布时间】:2020-12-15 17:09:22
【问题描述】:
在我的组件中,v-for 显示从 firestore 带来的 allItems 数组中的所有项目。
将末尾添加为“添加”按钮,以便用户可以将项目添加到他的购物篮中,因为我在商店中设置了一个数组,用于添加项目。
我在该按钮上有一个v-if,当单击itemAdded 为真的特定项目时,会显示消息已添加项目。这样 Item added 消息可以显示并且按钮消失。
但是当我点击按钮时,所有项目都会显示消息Item added。
我只希望特定项目显示消息。谁能为此提出解决方案。
组件
<v-col cols="12" sm="6" md="3" v-for="(item) in allItems" :key="item.ITEM_NAME">
<v-card
class="d-flex flex-row disableScroll"
flat
tile
style="margin-top: 16px; padding: 2px; overflow-x: auto;">
<v-card max-width="250">
<v-img
class="white--text align-end"
height="200px"
src="../../assets/img/category_blank.jpg"
>
<v-card-title>{{item.ITEM_NAME}}</v-card-title>
</v-img>
<v-card-subtitle class="pb-0">{{item.ITEM_DESC}}</v-card-subtitle>
<v-card-actions>
<v-card-text>Rs {{item.ITEM_PRICE}}</v-card-text>
<v-btn v-if="item.ITEM_STOCK && !itemAdded" style="margin-left: auto" color="orange" text @click="addItem(item)">
Add
</v-btn>
<p v-else-if="itemAdded">Item Added</p>
<p v-else> Out of Stock</p>
</v-card-actions>
</v-card>
</v-card>
</v-col>
脚本
<script>
import {db, getStoreID} from "@/main";
export default {
data() {
return {
allItems: [],
orderItems: {},
itemAdded: false,
}
},
name: "HomeCategories",
props: ["category"],
created() {
let docID = getStoreID();
db.collection("STORES")
.doc(docID)
.collection("ITEMS")
.doc("DATA")
.collection(this.$props.category).get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
this.allItems.push(doc.data())
})
})
},
methods: {
addItem(item){
this.orderItems.name = item.ITEM_NAME,
this.orderItems.price = item.ITEM_PRICE,
this.orderItems.isAvail = item.ITEM_AVAILABLE,
this.orderItems.imgUrl = item.ITEM_IMG_URL,
this.orderItems.quantity = 1,
this.itemAdded = true
this.$store.commit("ADD_ITEM_TO_BASKET", this.orderItems);
}
}
};
</script>
【问题讨论】:
标签: javascript vue.js web vuejs2