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

在vuetify的v-data-table中如何将选中行值传给带参数的表格外按钮

问题根因

通过原生setAttribute修改onclick属性的方式无法作用于Vue的@click绑定事件,二者属于两套不同的事件机制,这种操作也不符合Vue数据驱动的开发逻辑。
你已经通过v-model="selected"绑定了表格的选中项,该变量会自动同步所有勾选的行数据,无需动态给按钮绑定参数,直接在点击函数中读取该变量即可。


修改后的代码实现

模板部分

<v-toolbar flat>
  <v-toolbar-title>Details</v-toolbar-title>
  <div style="width:100%">
    <v-col class="text-right">          
       <!-- 保留原有事件绑定即可,无需动态修改、无需提前传参 -->
       <v-btn id="btnCopy" @click="Redirect" class="black--text">COPY</v-btn>            
    </v-col>
  </div>
  <v-spacer></v-spacer>
</v-toolbar>
<v-data-table
  v-model="selected"
  :headers="headers"
  :items="plist"
  :single-select="singleSelect"
  item-key="revId"
  show-select
  class="elevation-1"
  :single-expand="singleExpand"
  :expanded.sync="expanded"
  show-expand
  :items-per-page.sync="itemsPerPage"
  :page.sync="page"
  :loading="loadTable"
  loading-text="Loading data....Please wait"
>

JS逻辑部分

// 不需要在选中时操作DOM修改按钮绑定,enterSelect如果没有其他逻辑可以直接删除
enterSelect(values) {
  // 若选中时需要做其他校验/处理可以在这里写,不需要操作按钮事件
},
Redirect() {
  // 单选场景下selected数组只有一个元素,直接读取即可
  if (this.selected.length) {
    const revId = this.selected[0].revId
    alert("Hello" + revId)
    // 多选场景需要获取所有选中项的revId,可使用:this.selected.map(item => item.revId)
  } else {
    alert("请先选中需要操作的行")
  }
}

内容的提问来源于stack exchange,提问作者Raj Mehta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:45:03