vxe-table展开行嵌套子表,每个子表的数据都是接口获取,每次展开的子表的数据都不同。

我开始是这么写的

<vxe-tableref="tableRef"...:data="data">...<vxe-column type="expand" title="展开行" width="120"><template #content="{ row }"><div class="expand-wrapper"><vxe-tableborder:loading="loading":data="expandData" ...>...</vxe-table></div></template></vxe-column>...</vxe-table>

这样存在一个问题所有子表都绑定一个数据源,点开第一行的数据正常显示,点开第二行的时候第一行展开的子表数据和第二条展开的数据一样了。

要解决这个问题,你需要为每一行的展开内容维护一个独立的数据状态。这意味着每当你展开一行时,你应该检查是否已经为这一行加载过数据。如果已经加载过,就使用已有的数据;如果没有,就从接口获取数据并存储起来,以便下次展开时使用。

以下是解决方案的步骤:

  1. 维护一个状态对象:这个对象的键是每行的唯一标识符(比如行的ID),值是对应行的展开数据。
  2. 修改展开行的内容:在展开行的内容中,根据当前行的唯一标识符从状态对象中获取数据。
  3. 获取数据的逻辑:在展开行时,检查状态对象中是否已经有了对应行的数据。如果没有,就从接口获取数据并更新状态对象。

以下是示例代码:

<template><vxe-tableref="tableRef"...:data="data":expand-config="{ toggleMethod }">...<vxe-column type="expand" title="生成月计划" width="120"><template #content="{ row }"><div class="expand-wrapper"><!-- 使用 row 的唯一标识符来获取展开数据 --><vxe-tableborder:loading="loading":data="expandData[row.id] || []" <!-- 假设每行数据有唯一的 id 字段 -->...>...</vxe-table></div></template></vxe-column>...</vxe-table>
</template><script setup>
import { ref, reactive } from 'vue';const data = ref([...]); // 主表格数据
const expandData = reactive({}); // 存储每行展开数据的对象// 展开行事件处理函数
const toggleMethod= async ({ expanded, row }) => {if (expanded && !expandData[row.id]) {// 如果行被展开且该行数据未加载,则调用接口获取数据const rowData = await fetchDataForExpandRow(row.id); // fetchDataForExpandRow 是你的 API 调用函数expandData[row.id] = rowData; // 将获取到的数据存储}
};// 其他逻辑...
</script>

在这个示例中,expandData对象用于存储每行的展开数据。当用户尝试展开一行时,toggleMethod函数会检查expandData中是否已经有了对应行的数据。如果没有,它会调用API获取数据并将其存储在expandData中,以便下次展开时直接使用,避免重复调用API。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统——信号

将信号分为以上四个阶段 1.信号注册&#xff1a;是针对信号处理方式的规定&#xff0c;进程收到信号时有三种处理方式&#xff1a;默认动作&#xff0c;忽略&#xff0c;自定义动作。如果不是自定义动作&#xff0c;这一步可以忽略。这个步骤要使用到signal/sigaction接口 2.…

5. 条件和递归

5. 条件和递归 本章主要话题是if表达式, 它根据程序的状态执行不同的代码. 但首先介绍两个操作符号: 向下取整除法操作符和求模操作符.5.1 向下取整除法操作符和求模操作符 向下取整除法操作符(//)对两个数除法运算, 并向下取整得到一个整数. 假设, 一个电影的播放时长为105分…

Vim 常用指令

Vim 是一款功能强大且高度可定制的文本编辑器。其高效的编辑方式使其成为许多程序员和系统管理员的首选。 1. Vim 的基本模式 Vim 具有以下几种基本模式&#xff1a; 正常模式&#xff08;Normal mode&#xff09;&#xff1a;用于浏览和编辑文本&#xff08;按 ESC 进入&am…

Java | Leetcode Java题解之第150题逆波兰表达式求值

题目&#xff1a; 题解&#xff1a; class Solution {public int evalRPN(String[] tokens) {int n tokens.length;int[] stack new int[(n 1) / 2];int index -1;for (int i 0; i < n; i) {String token tokens[i];switch (token) {case "":index--;stack…

react:handleEdit={() => handleEdit(user)} 和 handleEdit={handleEdit(user)}有啥区别

handleEdit{() > handleEdit(user)} 和 handleEdit{handleEdit(user)} 之间的区别在于它们在调用函数时的行为方式不同&#xff0c;尤其是处理函数参数和立即调用方面&#xff1a; ### 1. handleEdit{() > handleEdit(user)} - **行为**: 这是一个箭头函数&#xff0c;…

vi/vim使用命令

你是否在编辑文件时以为键盘坏了&#xff0c;为什么不能删除呢&#xff0c;为什么不能敲代码呢&#xff0c;等你初识vi&#xff0c;会觉得这个东西为什么设计得这么难用&#xff0c;这篇教程带你熟练得用上这款经典的工具 Vi 是在 Unix 系统上广泛使用的编辑器&#xff0c;Vim …

深入探索Spring Boot的自动配置机制

深入探索Spring Boot的自动配置机制 在上一篇中&#xff0c;我们介绍了Spring Boot的自动配置机制及其基本工作原理。这篇文章将进一步扩展这一主题&#xff0c;深入探讨自动配置的内部实现、常见的自动配置类、以及如何通过高级自定义来优化Spring Boot应用的配置。 1. 自动…

Unity与Js通信交互

目录 1.Js给Unity传递消息 2.Unity给Js传递消息 简介: Unity 与 JavaScript 通信交互是指在 Unity 项目中实现与 JavaScript 代码进行数据交换和功能调用的过程。 在 Unity 中&#xff0c;可以通过特定的接口和技术来与外部的 JavaScript 环境进行连接。这使得 Unity 能够利…

Python CGI 编程

Python CGI 编程 1. 引言 CGI,即通用网关接口(Common Gateway Interface),是一种重要的互联网技术,它允许服务器上的程序与客户端(通常是浏览器)进行交互。Python作为一种流行的编程语言,因其简洁易读的语法和强大的功能,被广泛用于CGI编程。本文将详细介绍如何使用…

进击算法工程师深度学习课程

"进击算法工程师深度学习课程"旨在培养学员在深度学习领域的专业技能和实战经验。课程涵盖深度学习基础理论、神经网络架构、模型优化方法等内容&#xff0c;通过项目实践和算法实现&#xff0c;帮助学员掌握深度学习算法原理和应用&#xff0c;提升在算法工程师领域…

EasyExcel文件导出,出现有文件但没有数据的问题

一开始由于JDK版本过高&#xff0c;我用的17&#xff0c;一直excel没有数据&#xff0c;表头也没有&#xff0c;后来摸索了好久&#xff0c;找了资料也没有&#xff0c;后来改了代码后报了一个错误&#xff08;com.alibaba.excel.exception.ExcelGenerateException: java.lang.…

c++【入门】求三个数的平均数

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 小雅刚刚考完语文、数学、英语的三门期中考试&#xff0c;她想请你编个程序来帮她算算她的平均分&#xff0c;要求输入三个正整数&#xff0c;分别表示三科考试的分数&#xff0c;输出它们的平均值。 输入 一行&#xff0c;…

【抽代复习笔记】19-群(十三):奇偶置换、循环置换的几个定理及例题

定义&#xff1a; ①在Sn中&#xff0c;能够表示为奇数多个对换乘积的置换称为“奇置换”&#xff0c;能够表示为偶数多个对换乘积的置换称为“偶置换”&#xff1b; ②所有偶置换的集合记为An。 例1&#xff1a;&#xff08;1&#xff09;计算S1和S2中奇、偶置换的数目&…

代码随想录第三十七天打卡

56. 合并区间 本题也是重叠区间问题&#xff0c;如果昨天三道都吸收的话&#xff0c;本题就容易理解了。 代码随想录 class Solution { public:static bool cmp(vector<int>a,vector<int>b){if (a[0]b[0])return a[1]<b[1];return a[0]<b[0];}vector<vec…

数据中台-知识图谱平台

【数据分析小兵】专注数据中台产品领域,覆盖开发套件,包含数据集成、数据建模、数据开发、数据服务、数据可视化、数据治理相关产品以及相关行业的技术方案的分享。对数据中台产品想要体验、做二次开发、关注方案资料、做技术交流的朋友们&#xff0c;可以关注我。 1. 概述 随着…

清理Linux操作系统buff/cache缓存

清理Linux操作系统buff/cache缓存 清理页缓存 echo 1 > /proc/sys/vm/drop_caches 或者 sysctl -w vm.drop_caches1 清理目录项和inode缓存 echo 2 > /proc/sys/vm/drop_caches 或者 sysctl -w vm.drop_caches2 同时清理页缓存、目录项和inode缓存 echo 3 > /pr…

ResNet——Deep Residual Learning for Image Recognition(论文阅读)

1.什么是ResNet ResNet是一种残差网络&#xff0c;咱们可以把它理解为一个子网络&#xff0c;这个子网络经过堆叠可以构成一个很深的网络。下面是ResNet的结构。 2.为什么要引入ResNet 理论上来说&#xff0c;堆叠神经网络的层数应该可以提升模型的精度。但是现实中真的是这…

智慧守护 畅游无忧——北斗应急呼叫柱,为景区安全加码

在大自然的怀抱中&#xff0c;中型及大型公园、景区以其壮丽风光吸引着成千上万的游客前来探索&#xff0c;成为了人们休闲娱乐的好去处。然而&#xff0c;广袤的区域、复杂的地形和分散的人流也给安全保障带来了前所未有的挑战。传统的巡逻方式难以覆盖每一个角落&#xff0c;…

搜维尔科技:使用Haption远距离遥操作精确切割材料

使用Haption远距离遥操作精确切割材料 搜维尔科技&#xff1a;使用Haption远距离遥操作精确切割材料

【第六篇】SpringSecurity的权限管理

一、权限管理的实现 服务端的各种资源要被SpringSecurity的权限管理控制可以通过注解和标签两种方式来处理。 放开了相关的注解后在Controller中就可以使用相关的注解来控制了 JSR250注解 /*** JSR250*/ @Controller @RequestMapping("/user") public class UserC…