我是靠谱客的博主 粗心小土豆,最近开发中收集的这篇文章主要介绍element-ui.@expand-change第一次打开没数据,第二次打开有数的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

element-ui.@expand-change第一次打开没数据,第二次打开有数的问题

废话不多说我先上我的解决办法的代码


<el-table
:data="tableData"
style="width: 100%"
border
row-key="id"
@expand-change="changeRow"
>
<el-table-column type="expand">
<template #default="{ row }">
<el-table
:data="row.compareList"
border
style="width: 100%"
>
<el-table-column
prop="modelId"
label="model_id"
/>
<el-table-column
prop="benchmarkName"
label="benchmarkName"
/>
</el-table>
</template>
</el-table-column>
</el-table>
changeRow(val) {
const arr = [];
this.compareList.splice(0);
if (val.info.wait_for && val.info.wait_for.length) {
val.info.wait_for.forEach((item) => {
if (item.length) {
arr.push(...item);
}
});
}
getLinkTestRend(arr).then((res) => {
if (res && res.results && res.results.length) {
const data = res.results.map((item) => {
const obj = {
modelId: item.info.model_id,
benchmarkName: item.info.benchmark_name,
};
return obj;
});
// this.compareList.push(...data);
// compareList = data
const td = this.tableData.slice();
td.forEach((item) => {
if (item.id === val.id) {
const e = item;
e.compareList = data;
}
});
this.tableData = td;
}
});
},

解决办法:因为我异步请求了数据,所以第一次打开的时候数据还没回来,但是数据来了之后也没有渲染上去,第二次打开才有数据。 s e t 和 set和 setnextTick这些方法都试过没有。
仔细看了一下我把数据重新赋值了,所以改了下,看我的那个注释了的代码// this.compareList.push(…data); 这样解决就好了。
但是另一个问题又出现了。表格有多行数据,点击第二行的下啦会把第一行的下拉 的数据覆盖掉。这肯定是个bug了,所以我想到把请求回来的数据给塞到tableData的每一行数据里面,看上面代码。这样做了之后还是会有问题,你点击expand-change它会闪动,点不开。
我又查看element-ui的文档。发现有个row-key的属性。如果tableData的每一行数据有id属性就绑定上去,这样有数据就不会重新渲染了。问题完美解决。

最后

以上就是粗心小土豆为你收集整理的element-ui.@expand-change第一次打开没数据,第二次打开有数的问题的全部内容,希望文章能够帮你解决element-ui.@expand-change第一次打开没数据,第二次打开有数的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部