我有一个图表数据对象数组。我通过传递数组索引并将数据从对象中拉出来更新图表数据。这对除0
以外的所有索引均适用。
初始化图表时,我会加载0
索引,并且图表也可以正常运行,因此我知道该特定索引不是数据结构问题。使用索引0
调用图表上的更新函数时,我没有任何错误。
Here's a codepen显示它不适用于索引0。
为什么不更新0
索引的图表?
我有一个图表数据对象数组。我通过传递数组索引并将数据从对象中拉出来更新图表数据。这对除0
以外的所有索引均适用。
初始化图表时,我会加载0
索引,并且图表也可以正常运行,因此我知道该特定索引不是数据结构问题。使用索引0
调用图表上的更新函数时,我没有任何错误。
Here's a codepen显示它不适用于索引0。
为什么不更新0
索引的图表?
此更新不起作用。您应该重新绘制图表
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]))