Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何知道vue.js 3中哪个子级发出事件?_Javascript_Html_Events_Dom Events_Vuejs3 - Fatal编程技术网

Javascript 如何知道vue.js 3中哪个子级发出事件?

Javascript 如何知道vue.js 3中哪个子级发出事件?,javascript,html,events,dom-events,vuejs3,Javascript,Html,Events,Dom Events,Vuejs3,如果我有一个组件: <product-display :premium="premium" :cart="cart" @add-to-cart='updateCart' @remove-from-cart='removeById'> </product-display> 家长有以下方法: methods: { updateCart (id) { this.cart.

如果我有一个组件:

<product-display 
  :premium="premium" 
  :cart="cart" 
  @add-to-cart='updateCart' 
  @remove-from-cart='removeById'>
</product-display>
家长有以下方法:

 methods: {
        updateCart (id) {
            this.cart.push(id)
        },
        removeById(id) {
            const index = this.cart.indexOf(id)
                if (index > -1) {
                    this.cart.splice(index, 1)
                }
        }
    }
是否有一种方法可以从父级中删除一个方法,并且只使用
updateCart(id)
知道哪个子级发出事件

因此,在HTML中,您将得到:

 @add-to-cart='updateCart' 
 @remove-from-cart='updateCart'

你可以用几种不同的方法来做。我最喜欢的是这样的:

// Component.vue
updateCart(action) {
  this.$emit('update-cart', {
    id: this.variants[this.selectedVariant].id), action
}
// Component.vue
updateCart(action) {
  this.$emit('update-cart', {
    id: this.variants[this.selectedVariant].id), action
}
//Parent.vue
@update-cart='updateCart'

methods: {
  updateCard({id, action}) {
    if (action == 'add') {
      return this.cart.push(id);
    }
    this.card = this.card.filter(x => x != id);
  }
}