chart.js 重复绘图问题 20

现在页面上有一个canvas,在这个canvas上使用chart.js绘图,页面上进行一些ajx操作之后数据改变,使用新数据在canvas上重新绘图,但之前的图表依然存在... 现在页面上有一个canvas,在这个canvas上使用chart.js绘图,页面上进行一些ajx操作之后数据改变,使用新数据在canvas上重新绘图,但之前的图表依然存在,结果就是鼠标在图表上移动的时候,2张图表之间会来回闪动。请问在绘制新图之前如何清除之前的图表?试了clearRect没有效果 展开
 我来答
oggboy
2015-08-31 · TA获得超过190个赞
知道答主
回答量:292
采纳率:0%
帮助的人:59.9万
展开全部
myLineChart.destroy();
能解决一部分问题,更完美的解决方法我还在研究中,同求大神指点
更好的解决方法如下:
每次绘图之前先删除canvas节点,重新添加一个。
$('#lineChart').remove(); // this is my <canvas> element
$('#lineChartParent').append('<canvas id="lineChart" height="230"></canvas>');
z_江
2018-03-14 · TA获得超过166个赞
知道答主
回答量:56
采纳率:0%
帮助的人:24.9万
展开全部

http://www.chartjs.org/docs/latest/developers/updates.html

官方文档提供了完美的解决方案,根据你的需要进行处理,以上为更新连接,建议自己去看,以下为简单的分析:

你可以直接修改你创建的chart的数据,使用update提交即可。

以官网的截图为例:

创建的代码是:

var myLineChart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: options
});

其中data和options的结构不再详细叙述,如果还没有学会创建,就别说更新。

创建好chart后,你可以直接对chart的属性进行设置,比如我要添加Aug这个点,把值设置为45。

那么你可以非常简单粗暴地重新构建一个data,然后直接赋值更新:

myLineChart.data=new_data;
myLineChart.update();

你也可以修改现有的data中的东西:

//这里你需要对data结构了解
myLineChart.data.labels.push("Aug");//labels为一数组,怎么操作数组不需要多说
myLineChart.data.datasets[0].data.push(45);//了解data结构
myLineChart.update();

值得一说的是,注意新老版本文档是有区别的,建议直接去官网下载最新版本的js

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式