echarts有数据但是无法绘制图表

碰到了一个上一任开发人员遗留下的bug,就是在第一次进页面的时候能正常渲染echarts图表,当请求接口数据发生改变时发现页面上一片空白啥都没有如下图;
在这里插入图片描述
前一任留下的代码类似下面这种

 <div id="chart" 
      style="position: relative; width: 500px; height: 500px;margin: auto;">
 </div>
<div style="text-align: center">
		<button id="btn" >模拟请求接口</button>
</div>
let option = {
	legend:{
		show:true
	},
	xAxis: {
		type: 'category',
		data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
	},
	yAxis: {
		type: 'value'
	},
	series: [{
		name:"test",
		data: [],
		type: 'line'
	}]
};
let array = [820, 932, 901, 934, 1290, 1330, 1320];
function drawChart(list) {
	var mychart =""
	if(!list.length){
		$("#chart").html("暂无数据")
	}else{
		$("#chart").html("")
		mychart = echarts.init(document.getElementById("chart"));
		option.series[0].data = list
		mychart.setOption(option)
	}
};
drawChart(array);
//点击模拟请求数据
$("#btn").click(()=>{
	var list
	parseInt( 10*Math.random() ) < 5 ? (list=[]) : ( list=[720, 1832, 801, 734, 1090, 630, 1120]);
	drawChart(list)
});

f12打开开发者工具一看控制台
在这里插入图片描述
There is a chart instance already initialized on the dom 在dom中已经存在了一个chart实例;通过上边的代码可以看到在每次点击当有数据的时候就会再去创建chart实例,因此导致上述问题我们只需将代码改下即可
ps:高版本的echart.js对开者真的是太友好了,我接手的那个项目echart.js版本较低控制台压根就不提示,愣是卡了我半天

var mychart = echarts.init(document.getElementById("chart"));
function drawChart(list) {
	if(!list.length){
		$("#chart").html("暂无数据")
	}else{
		$("#chart").html("")
		option.series[0].data = list
		mychart.setOption(option)
	}
};

现在我们打开页面一看
在这里插入图片描述
现在一开始进来都不会绘图了,而且控制台也不报错,然后把函数又改了一下

function drawChart(list) {
	if(!list.length){
		mychart.clear()
		$("#chart").append("<p style='position:absolute;left:0;top:0'>暂无数据</p>")
	}else{
		if($("#chart p")) $("#chart p").remove();
		option.series[0].data = list
		mychart.setOption(option)
	}
};

在这里插入图片描述

终于好了,这也太难了,原因可能就是不能对实例化chart对象有什么特殊的操作吧,我这个小菜鸟也不是很清楚。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值