您基本上了解了如何使用Emit流在子组件和父组件之间进行通信。
但是在您的shoppingcart.vue组件中有一个问题。
您需要在按钮内部向addProductToShoppingCart指令传递一个参数,因为它将在方法内部使用。
如果不是,则方法addProductToShoppingCart()不会向产品数组中添加任何内容。
所以首先,我添加了一个包含所有产品属性的产品对象。
然后,我将addProductToShoppingCart(product)方法中的product对象作为参数传递。
<template>
<div>
<p>{{ product.title }}</p>
<img :src="product.img">
<button @click="addProductToShoppingCart(product)">
</button>
</div>
<script>
export default {
data() {
return: {
product: {
name: 'test',
img: require('../assets/shoppingcart.png')
}
}
},
methods: {
// your method
addProductToShoppingCart (product) {
this.$emit('addProductToShoppingCart', product)
}
}
}
</script>
</template>
然后在shop.vue中,您必须使用以下方法修改您的方法:
addToShoppingCart (product) {
// Do we need the same method here?
this.products.push(product);
},