layui的tab标签页与echarts图表产生的不显示问题

本文讲述了在使用layui的tab组件时,遇到echarts图表无法正常显示的问题。通过分析发现,问题在于js执行时tab页尚未完全切换,导致图表宽度为0。最终采用延迟执行的方法,成功解决了这个问题,实现了良好的用户体验。

layui的tab标签页与echarts图表产生的不显示问题

先上图:
在这里插入图片描述

<div class="layui-tab">
	<ul class="layui-tab-title">
		<li class="web-tab">成品</li>
		<li class="layui-this web-tab">历史记录</li>
	</ul>
	<div class="layui-tab-content">
	......
	</div>
</div>

这里每个标签页都给了他一个class样式:web-tab,这个名字自己定,其作用主要是为了后面的click事件。

接下来添加点击事件:

var InventoryWasteMap = echarts.init($("#InventoryWasteMap")[0], "theme");//获取
$(".web-tab").click(function (e) {//点击事件
      InventoryWasteMap.resize();//重新加载宽高
});

在这里插入图片描述
还是出不来,看下到底是什么原因。。

在这里插入图片描述
所有宽度都没有获取到,且渲染的div中没有东西。。嗯??

我重新打了断点执行了一下,好嘛,现实告诉我在js走到InventoryWasteMap.resize();这一步的时候,tab页面还没有切换过来,换言之就是还没有打开第一个tab页,这就导致即使重新加载渲染,获取到的宽度依旧只是0。

这我就有点想笑了,不说废话,最容易的解决办法上来。。

var InventoryWasteMap = echarts.init($("#InventoryWasteMap")[0], "theme");//获取
	$(".web-tab").click(function (e) {//点击事件
	setTimeout(function () {//延迟0.3s
	      InventoryWasteMap.resize();//重新加载宽高
	}, 300);
});

怎么样是不是很想笑?延迟执行无疑是最笨的办法,但架不住他有效啊,关键是用户体验也不差。。

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值