使用百度的echarts图表进行数据报表,后端使用json来加载数据,前端有几个button来切换不同的查询条件。实际在使用时发现echarts呈现的数据刷新不完全。
现象如下:
使用数据:
{ "data": [1, 2, 1, 2, 3, 2], "date": ["2015.12.15", "2015.12.20", "2015.12.21", "2016.01.12", "2016.01.14", "2016.01.26"], "name": "Bugs2" }
显示为:

数据为:
{ "data": [3, 2, 1, 2, 1], "date": ["2015.11.13", "2015.11.24", "2015.12.19", "2016.01.12", "2016.01.14"], "name": "Bugs2" }
显示为:

问题是:第二次加载的数据,只有五个日期的,前面的五列日期和数值都刷新了,但是第六列的数据却残留了(如蓝色框所示),使用alert显示数据也只有五组数据。
尝试了多个方法都没有解决。
另外查看“数据视图”中,数据显示是有多余这一列数据的。
我的代码如下:
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="height:400px"></div>
<!-- ECharts单文件引入 -->
<script src="http://echarts.baidu.com/build/dist/echarts.js"></script>
<script type="text/javascript">
// 路径配置
require.config({
paths: {
echarts: 'http://echarts.baidu.com/build/dist'
}
});
// 使用
require(
[
'echarts',
'echarts/chart/line',
'echarts/chart/bar' // 使用柱状图就加载bar模块,按需加载
],
function (ec) {
// 基于准备好的dom,初始化echarts图表
var myChart = ec.init(document.getElementById('main'));
var option = {
tooltip: {
show: true
},
legend: {
data:['Bugs2']
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {show: true, type: ['line', 'bar']},
restore : {show: true},
//saveAsImage : {show: true}
}
},
xAxis : [
{
type : 'category',
data : []
}
],
yAxis : [
{
type : 'value'
}
],
series : [{name:'',type:'bar',data:[]}]
};
//有bug,不能动弹刷新
$(function() {
$('tr td a').bind('click', function() {
//alert($(this).closest('tr').find('td:eq(1)').text());
$.getJSON("/productdatas", {
product: $(this).closest('tr').find('td:eq(1)').text(),
},function(data) {
//alert(data.date);
option.xAxis[0].data = data.date;
option.series[0].name = data.name;
option.series[0].data = data.data;
alert(option.series[0].data)
myChart.setOption(option);
//myChart.setSeries(data.data);
});
});
});
}
);
</script>
按正常来 你的这种写法是可以的,应该也哪段有问题,如果找到不,你可以尝试直接重新加载这个报表
我之前的就是很野蛮的直接重新加载,也是没有问题的
http://www.cnblogs.com/zery/p/5132065.html
你的刷新得重新初始化表格,为不只是重新绑定数据
不然之前的最后一条数据会遗留下来
感谢两位的回答,提供了一些思路。
重新看了下API,发现 myChart.clear();这个方法可以解决问题,是最简单的。
在myChart.setOption(option);之前使用这个方法。问题得到解决。
官方解释:
| {self} clear | {void} | 清空绘画内容,清空后实例可用 |
链接:http://echarts.baidu.com/echarts2/doc/doc.html#实例方法
找了一上午,被你的答案轻松解决了,谢谢啦
完美。点赞
水球图不刷新问题用这个解决了,谢谢
找了大半天,还得是你
赞赞,也解决了我得问题
赞 谢谢 clear()真好用