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

Vuetify 3数据表格:如何同时使用item与expanded-row插槽实现行展开

Vuetify 3 数据表格同时实现自定义项与行展开的解决方法

问题根源:当完全自定义item插槽时,会覆盖Vuetify默认的行结构,包括内置的行展开触发器,导致expanded-row插槽失去触发入口,功能失效。

解决思路:在item插槽中手动添加展开触发元素,同时保留自定义表格项的渲染逻辑,具体实现如下:

<v-data-table
  :items="yourData"
  :expanded="expandedRows"
  @update:expanded="expandedRows = $event"
>
  <!-- 自定义表格行,手动嵌入展开触发器 -->
  <template v-slot:item="{ item, isExpanded, toggleExpand }">
    <tr>
      <!-- 展开/收起按钮 -->
      <td>
        <v-btn icon @click="toggleExpand(item)">
          <v-icon>{{ isExpanded ? 'mdi-chevron-down' : 'mdi-chevron-right' }}</v-icon>
        </v-btn>
      </td>
      <!-- 自定义列内容 -->
      <td>{{ item.title }}</td>
      <td>{{ item.category }}</td>
      <td>{{ item.createTime }}</td>
    </tr>
  </template>

  <!-- 展开行内容 -->
  <template v-slot:expanded-row="{ item }">
    <tr>
      <!-- colspan需与表格总列数(含展开按钮列)一致 -->
      <td colspan="4">
        <div class="pa-4">
          <h3>详情信息</h3>
          <p>{{ item.description }}</p>
          <p>备注:{{ item.remark }}</p>
        </div>
      </td>
    </tr>
  </template>
</v-data-table>

关键注意事项:

  • 从item插槽参数中解构isExpanded(当前行展开状态)和toggleExpand(触发展开/收起的方法),绑定到自定义按钮上
  • expanded-row的colspan值必须和表格总列数匹配,否则会出现布局错位
  • 如果原本配置了headers数组,需要调整headers包含展开列,或者直接放弃headers配置,完全手动渲染所有列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:02:07