layui表格有数据却渲染不出来,一直转圈加载中

在使用layui前端框架时遇到表格数据加载不出来的问题,即使数据正确也无法渲染,控制台显示layui-table-init节点卡住。尝试多种方案,包括将子页面内容移到主页面、重复请求数据接口,最终发现是layui版本问题,由于父子窗口数组构造函数引用不一致导致渲染失败。解决方案是在table.js中修改相关判断,修复数组判断逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 还是先上图,页面一直卡着,数据加载不出来,连表头都没有渲染出来。

 首先我要说的是,我的所有字段都是正确的。表头字段与数据源不一致的情况,数据出不来,起码表格行数还在。我这是整个表格都没出来,字段名拼写错误的同学可以出门右转了。

控制台显示的卡住页面的节点信息,layui-table-init:

<div class="layui-table-init" style="background-color: #fff;">
    <i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>
</div>

搜了下网上很少有遇到我这种情况的同学,基本没有解决方案。看到有个同学和我有一样的问题:如何把父页面选择的表格数据在子页面渲染表格,获取到数据但表格一直转圈 · Issue #I3UQGQ · 贤心/layui - Gitee.com但是没有人给出解决方案。

说下我这样现象出现的背景,待会说解决方案。

我在主页面上打开了 一个子页面,在子页面请求数据,再将数据渲染到主页面上。我很肯定数据拿回来了,因为能打印出来,也不是表格节点不存在的问题。数据格式也是对的,因为复制下来请求数据,写死要渲染的数据源,表格是能正常渲染出来的。出不来的原因我至今没有找到,但是我找到了两个解决方案:

方案一:如果子页面上面东西不多时,可以把内容写在主页上,通过css控制是否显示。

方案二:在主页上再把子页面获取数据源的接口再请求一遍,子页把请求参数发给主页就行了。

上述两个方案都是我在工作中实际测试过的,可行。若还有不懂的可以留言交流。

经过另外查找资料:在一个帖子的回复里找到了比较正规的解决方案:layui table静态数据渲染失败_博问_博客园

把2.4.5版本中的table.js用工具格式化,找到第345行把判断修改即可:if (a.data && a.data.constructor === Array) {
修改为:if (a.data && Object.prototype.toString.call(a.data) == '[object Array]') {
或者修改为: if (a.data && $.type(a.data) == "array") {
原因是父子窗口的数组的constructor 构造函数引用不一致导致a.data.constructor === Array一直是false

公司用的layui版本为2.6.5,只有一个layui.js文件,可直接搜索a.data.constructor替换。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值