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

Vuetify数据表格筛选无结果时如何隐藏其所在的v-card组件

实现方案

你可以直接用Vuetify 2 v-data-table 自带的pagination事件实现需求,该事件会在筛选、排序、分页变化时自动触发,返回的参数中包含筛选后的总条目数totalItems,只需基于这个值判断是否展示卡片即可。

步骤1:新增状态存储变量

在组件的data中新增对象存储每个数据源对应表格的有效数据状态:

data() {
  return {
    // 你原有的其他数据定义
    tableHasData: {}
  }
}

步骤2:修改模板代码

给v-data-table添加pagination事件监听,同步当前表格的有效状态,同时给v-card添加显示判断:

<v-col v-for="datasource in datasources" :key="datasource.id" cols="6" >
  <v-card 
    v-if="tableHasData[datasource.id] ?? (datasource.config.data?.length || 0) > 0"
  >
    <v-card-title>
     ...
    </v-card-title>
    <v-card-subtitle>{{ datasource.name }}</v-card-subtitle>
    <v-card-text>
      <v-row>
        <v-col>
          <v-data-table
            dense
            :headers="datasource.config.headers"
            :items="datasource.config.data"
            @pagination="(pagObj) => tableHasData[datasource.id] = pagObj.totalItems > 0"
          >
          </v-data-table>
        </v-col>
      </v-row>
    </v-card-text>
  </v-card>
</v-col>

兼容说明

如果你的项目不支持ES6+的空值合并运算符??,可以把v-if的判断替换为普通三元表达式:

<v-card 
  v-if="typeof tableHasData[datasource.id] !== 'undefined' ? tableHasData[datasource.id] : (datasource.config.data?.length || 0) > 0"
>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:57:03