使用数组索引0更新chart.js不起作用

我有一个图表数据对象数组。我通过传递数组索引并将数据从对象中拉出来更新图表数据。这对除0以外的所有索引均适用。

初始化图表时,我会加载0索引,并且图表也可以正常运行,因此我知道该特定索引不是数据结构问题。使用索引0调用图表上的更新函数时,我没有任何错误。

Here's a codepen显示它不适用于索引0。

为什么不更新0索引的图表?

wsk520520 回答:使用数组索引0更新chart.js不起作用

此更新不起作用。您应该重新绘制图表

 function resetChart() {
   const ctx = document.getElementById("myChart").getContext("2d");
   window.myChart = new Chart(ctx,chartData[curIndex]);
 }

 window.onload = function() {
  this.resetChart();
 };

function UpdateChart(index) {
  curIndex = index;
  myChart.data.labels = chartData[curIndex].data.labels;
  myChart.data.datasets[0].data = chartData[curIndex].data.datasets[0].data;
  myChart.data.datasets[0].label = chartData[curIndex].data.datasets[0].label;
  myChart.data.datasets[1].data = chartData[curIndex].data.datasets[1].data;
  myChart.data.datasets[1].label = chartData[curIndex].data.datasets[1].label;
  this.resetChart();
}
,

更改:

window.myChart = new Chart(ctx,chartData[curIndex]);

window.myChart = new Chart(ctx,JSON.parse(JSON.stringify(chartData[curIndex])));

原因是您需要克隆对象,否则myChart与chartData [0]相同,并且当您单击1或2时,它将覆盖0。

这部分代码将克隆对象JSON.parse(JSON.stringify(chartData [curIndex]))

本文链接:https://www.f2er.com/2822435.html

大家都在问