vxe-table展开行嵌套子表,每个子表的数据都是接口获取,每次展开的子表的数据都不同。
我开始是这么写的
(图片来源网络,侵删)
...
...
这样存在一个问题所有子表都绑定一个数据源,点开第一行的数据正常显示,点开第二行的时候第一行展开的子表数据和第二条展开的数据一样了。
要解决这个问题,你需要为每一行的展开内容维护一个独立的数据状态。这意味着每当你展开一行时,你应该检查是否已经为这一行加载过数据。如果已经加载过,就使用已有的数据;如果没有,就从接口获取数据并存储起来,以便下次展开时使用。
以下是解决方案的步骤:
- 维护一个状态对象:这个对象的键是每行的唯一标识符(比如行的ID),值是对应行的展开数据。
- 修改展开行的内容:在展开行的内容中,根据当前行的唯一标识符从状态对象中获取数据。
- 获取数据的逻辑:在展开行时,检查状态对象中是否已经有了对应行的数据。如果没有,就从接口获取数据并更新状态对象。
以下是示例代码:
...
...
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; // 将获取到的数据存储
}
};
// 其他逻辑...
在这个示例中,expandData对象用于存储每行的展开数据。当用户尝试展开一行时,toggleMethod函数会检查expandData中是否已经有了对应行的数据。如果没有,它会调用API获取数据并将其存储在expandData中,以便下次展开时直接使用,避免重复调用API。
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
