tab标签页切换时Echarts加载不正常的问题

本文档描述了一个关于Echarts图表在选项卡切换后,再改变浏览器窗口大小导致渲染失败的问题。解决方案是通过监听选项卡切换事件,并在切换到图表选项卡时调用Echarts的resize()方法,确保图表适应新的窗口大小。此外,提供了具体的JavaScript代码示例以供参考。
摘要由CSDN通过智能技术生成

切换tab选项卡时Echarts加载不正常的问题

一、问题描述

我有两个选项卡,一个用来显示Echarts图表,一个用来显示Echarts图表的数据源
在这里插入图片描述
但是我切换到数据源的选项卡后再改变浏览器窗口大小时,这是再切换回echarts图表的选项卡就会出现:
在这里插入图片描述

可以看到,图形渲染失败了

二、解决方案:

	var charts=[];
    var injectionWaterChart=echarts.init(document.getElementById('echarts_InjectionWater'));
    var pressChart=echarts.init(document.getElementById('echarts_Press'));
    var createDaysChart=echarts.init(document.getElementById('echarts_CreateDays'));
    charts.push(injectionWaterChart);
    charts.push(pressChart);
    charts.push(createDaysChart);
    //解决tab切换后改变窗口大小时不显示问题 在加载窗口后重新渲染。
    $('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
        var activeTab = $(e.target)[ 0 ].hash;
        if (activeTab=='#tab-1'){
            for(var i=0;i<charts.length;i++){
                charts[i].resize(); //适应div大小
            }
        }
    });   //data-toggle="pill还是data-toggle="tab" 根据前面所用标签页的不同来选择

就是再次切换回图表选项卡的时候,调用restore()方法,将图表数据还原即可,那个tab-1是我图表选项卡中tab标签的id。

三、拓展

在这里插入图片描述
参考链接:https://www.runoob.com/bootstrap/bootstrap-tab-plugin.html

可以尝试使用异步加载Echarts图表的方式来实现切换tab立即切换,而不必等待Echarts加载完毕。 具体方法如下: 1. 在页面加载,只加载当前tab对应的Echarts图表,其他tab对应的Echarts图表加载; 2. 当切换到其他tab,先显示一个loading动画,然后再异步加载对应的Echarts图表; 3. 当Echarts图表加载完毕后,再隐藏loading动画,显示Echarts图表。 示例代码如下: ```javascript // 定义一个数组,存储已经加载过的Echarts图表 var echartsLoaded = []; // 切换tab的事件处理函数 function changeTab(tabIndex) { // 显示loading动画 showLoading(); // 判断当前tab对应的Echarts图表是否已经加载过 if (echartsLoaded[tabIndex]) { // 如果已经加载过,直接显示Echarts图表 showEcharts(tabIndex); } else { // 如果加载过,异步加载Echarts图表 loadEcharts(tabIndex, function() { // 加载完毕后,隐藏loading动画,显示Echarts图表 hideLoading(); showEcharts(tabIndex); // 将已经加载过的Echarts图表保存到数组中 echartsLoaded[tabIndex] = true; }); } } // 异步加载Echarts图表 function loadEcharts(tabIndex, callback) { // 创建Echarts图表 var chart = echarts.init(document.getElementById('chart_' + tabIndex)); // 加载数据 // ... // 调用回调函数 callback(); } // 显示loading动画 function showLoading() { // ... } // 隐藏loading动画 function hideLoading() { // ... } // 显示Echarts图表 function showEcharts(tabIndex) { // ... } ``` 这样,就可以实现切换tab立即切换,而不必等待Echarts加载完毕了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别团等shy哥发育

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值