You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中如何在$emit时传递额外参数(v-for场景)

在Vue中结合v-for传递子组件emit参数与对应数组项

当通过v-for循环数组生成多个ProductEntry子组件时,需要在父组件捕获子组件自定义$emit事件的同时,拿到对应循环项(product对象)和emit传递的所有参数,从而修改productList中的对应项。

初始代码

父组件

<ProductEntry 
    @update-price="updatePrice" 
    v-for="product in productList"
        :product-description="product.description"
        :product-amount="product.amount"
        :product-price="product.price">
</ProductEntry>

子组件

<GrowingTextArea id="priceCol" @input-update="updatePrice" />

解决方案

通过$event获取子组件emit传递的参数,再将当前循环的product对象作为额外参数传入处理函数:

<ProductEntry 
    @update-price="updatePrice($event, product)" 
    v-for="product in productList"
        :product-description="product.description"
        :product-amount="product.amount"
        :product-price="product.price">
</ProductEntry>

在父组件的处理方法中,就能同时接收emit参数和对应product对象,进而修改productList:

// 父组件方法示例
updatePrice(newPrice, product) {
  const targetItem = this.productList.find(item => item.id === product.id)
  if (targetItem) {
    targetItem.price = newPrice
  }
}

内容的提问来源于stack exchange,提问作者Filip Kestner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:50:59