Chart.js:图表类型的动态更改(行到栏为例)

前端之家收集整理的这篇文章主要介绍了Chart.js:图表类型的动态更改(行到栏为例)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图根据选择框更改热交换图表类型.如果需要更新数据,则会更改.

例如,在页面加载时,我创建一个如下图表:

var config = {
     type: 'line',data: {
        labels: this.labels,datasets: [{
            label: 'Some Label',data: this.values
        }]
     },options: {
         responsive: true
     }
}
var context = document.getElementById('canvas').getContext('2d');
window.mychart = new Chart(context,config);

但后来我将组合框更改为条形图.我在页面加载时用条形图测试了数据,效果很好.

这是我试图改变图表的方式.

window.mychart.destroy();

// chartType = 'bar'
config.type = chartType;

var context = document.getElementById('canvas').getContext('2d');
window.mychart = new Chart(context,config);

window.mychart.update();
window.mychart.render();

但没有任何反应.折线图仍然存在.如何动态更改图表类型? (即使它意味着破坏和重新创建图表画布).

UPDATE

注意它看起来实际上是在破坏图表,但是不断重绘折线图,即使我做了console.log(config.type);它返回bar,而不是line

解决方法

修复

>销毁旧图表(删除事件监听器并清除画布)
>制作配置对象的深层副本
>更改副本的类型
>传递副本而不是原始对象.

Here is a working jsfiddle example

示例概述:

var temp = jQuery.extend(true,{},config);
temp.type = 'bar'; // The new chart type
myChart = new Chart(ctx,temp);

注意:使用Chart.js的2.0.1版

为什么会这样

Chart.js修改你传入的配置对象.因此你不能只改变’config.type’.您可以进入修改后的对象并将所有内容更改为所需的类型,但只保存原始配置对象要容易得多.

原文链接:https://www.f2er.com/js/159622.html

猜你在找的JavaScript相关文章