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

Vuetify可展开行数据表格输入时自动折叠问题求助

解决Vuetify可展开行数据表格输入时自动折叠的问题

这个问题我之前也碰到过,核心原因是:当你在展开行的输入字段中输入内容时,双向绑定(v-model)会更新对应的数据项,触发Vuetify数据表格的重新渲染。而默认情况下,表格的展开状态是内部维护的,重渲染后就会丢失,导致行自动折叠。

下面是具体的解决步骤,帮你持久化展开状态:

1. 手动维护展开状态数组

在组件的data中添加一个数组,用来存储当前展开的行的唯一标识(比如行的id):

data() {
  return {
    // 你的其他数据(比如items、headers等)
    expandedRows: [] // 用来追踪展开的行
  }
}

2. 绑定表格的展开状态到数组

修改你的v-data-table组件,把expanded属性绑定到刚才创建的数组,同时监听update:expanded事件来更新数组:

<v-data-table
  :items="items"
  :headers="headers"
  :expanded="expandedRows"
  @update:expanded="expandedRows = $event"
  :item-key="item => item.id" <!-- 确保这里是行的唯一标识,比如id -->
  expand-icon="mdi-chevron-down"
>

注意:item-key必须设置为行数据的唯一属性(比如id),这样表格能准确识别每一行,避免展开状态混乱。

3. 保持输入字段的双向绑定

展开行的输入字段可以正常使用v-model绑定行数据的属性,现在因为展开状态由我们手动维护,数据更新不会再导致行折叠:

<template v-slot:item.expand="{ item }">
  <v-card>
    <v-card-text>
      <v-text-field
        v-model="item.note" <!-- 绑定到行数据的属性 -->
        label="添加备注"
        full-width
      ></v-text-field>
    </v-card-text>
  </v-card>
</template>

这样修改后,你在输入字段中输入内容时,表格虽然会因为数据更新重渲染,但展开状态会通过expandedRows数组保持下来,不会自动折叠了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:43:38