You need to enable JavaScript to run this app. Vuetify Datatable内v-select变更时无法传值?如何同时传递行数据与选中值
优惠活动
大模型
产品
解决方案
定价
更多

Vuetify Datatable内v-select变更时无法传值?如何同时传递行数据与选中值

Vuetify 表格列插槽中嵌入v-select的change事件取值问题

完全可以实现同时获取当前表格行item值、v-select实时选中值的需求,之前代码拿不到值的核心是事件绑定和组件写法存在两处偏差。

问题原因

  • 事件传参被截断:原代码写@change="changeProgress(item)"时,相当于给回调函数写死了只接收item一个参数,v-select触发change事件时自动抛出的选中值参数被完全忽略,方法里访问的this.val没有任何数据来源,自然无法打印出有效内容
  • 组件绑定不规范:原代码使用:model="item.progress"做单向绑定,不符合v-select的双向绑定逻辑

正确实现代码

插槽模板部分

<template #item.progress="{ item }">
  <div>
    <v-select
      :items="list"
      label="status"
      v-model="item.progress"
      @change="changeProgress($event, item)"
    ></v-select>
  </div>
</template>

回调方法部分

methods: {
  changeProgress(selectValue, rowItem) {
    // 这里selectValue就是v-select的实时选中新值
    // rowItem就是当前行的完整数据对象
    console.log('当前行数据:', rowItem);
    console.log('下拉框选中的最新值:', selectValue);
  }
}

实用提醒

  • 模板事件绑定里的$event是Vue内置的固定占位符,专门用来承接当前事件抛出的参数,需要同时传自定义参数和事件值的时候,把$event放在参数列表的对应位置即可,不会和其他参数冲突
  • 直接用v-model把v-select绑定到当前行的item.progress字段,用户选完值会自动同步到行数据里,不需要在change方法里手动给行字段重新赋值
  • Vuetify 2、3两个大版本中v-select的change事件触发逻辑和双向绑定规则完全兼容上述写法,不需要做额外适配

内容的提问来源于stack exchange,提问作者Bryant Tang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 14:45:05