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

点击v-data-table展开箭头时如何获取对应行的item数据

解决方案

展开箭头的点击事件被v-data-table内部阻止了冒泡,所以不会触发@click:row事件,用以下两种方案都可以实现需求:

方案1:使用内置的展开事件(适用于Vuetify 2.x)

Vuetify 2.x的v-data-table内置了item-expand事件,点击展开/收起箭头时会触发,直接返回当前操作的行数据。

修改模板代码

给你的v-data-table组件添加@item-expand事件绑定:

<v-data-table
    :expanded.sync="expanded"
    :headers="tableHeaders"
    :items="myData"
    :single-expand="true"
    show-expand
    @item-expand="handleExpandRow"
 >

编写事件处理方法

methods: {
  handleExpandRow(item, isExpanded) {
    // item为当前点击箭头对应的行数据
    // isExpanded为true表示当前是展开操作,false表示收起操作
    // 此处写入你的业务逻辑即可
    console.log('当前行数据', item)
  }
}

方案2:监听展开值变化(兼容Vuetify 2.x/3.x)

因为你用了sync(Vuetify3对应v-model:expanded)绑定了expanded变量,开启single-expand后expanded数组最多只会存在一个元素,就是当前展开的行数据,直接监听该数组变化即可:

示例代码(Vuetify 3.x写法)

<v-data-table
    v-model:expanded="expanded"
    :headers="tableHeaders"
    :items="myData"
    :single-expand="true"
    show-expand
    @update:expanded="handleExpandChange"
 >
// 组合式API写法
const handleExpandChange = (expandedList) => {
  if (expandedList.length) {
    const currentItem = expandedList[0]
    // 拿到当前展开的行数据执行业务逻辑
    console.log('当前展开行数据', currentItem)
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:24:07