gpt4 book ai didi

javascript - Chart.js v2 更新图表,无需全局变量

转载 作者:行者123 更新时间:2023-12-03 04:22:43 25 4
gpt4 key购买 nike

我使用的是chart.js v2.5.0。

我想动态创建图表而不使用全局变量。

例如,我想使用类似这样的代码: https://jsfiddle.net/DUKEiLL/sf57xw6b/

        function UpdateChart(ctrl) {
var config = $("#" + ctrl).data("ChartJs");
config.data.datasets.forEach(function (dataset) {
dataset.data = dataset.data.map(function () {
return randomScalingFactor();
});
});

var ctx = document.getElementById(ctrl).getContext("2d");
var TempMyDoughnut = new Chart(ctx, config);
TempMyDoughnut.update();
}

但它无法正常工作:当用户按下“更新”按钮并将鼠标悬停在图表上时,突然显示以前的实例。

最佳答案

由于您在每次执行 UpdateChart 函数时都会创建一个新图表,因此您必须销毁任何以前的图表实例以防止悬停问题。

要实现此目的,您只需将 UpdateChart 函数替换为以下...

function UpdateChart(ctrl) {
var config = $("#" + ctrl).data("ChartJs");
config.data.datasets.forEach(function(dataset) {
dataset.data = dataset.data.map(function() {
return randomScalingFactor();
});
});

// destroy previous instance of chart
var meta = config.data.datasets[0]._meta;
for (let i in meta) {
if (meta[i].controller) meta[i].controller.chart.destroy();
}

var ctx = document.getElementById(ctrl).getContext("2d");
var TempMyDoughnut = new Chart(ctx, config);
}

这是working example on jsFiddle

关于javascript - Chart.js v2 更新图表,无需全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43872572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com