尝试在 jsfiddle 上发布我的代码,我能够找到解决这个非常奇怪的问题的方法。我有
var barCharData = {
labels: ["2", "3", "4"],
datasets: []
};
,所以一开始我的任何图表中都没有数据(在从数据库获取数据之前)。对于我拥有的每张图表,我都做了这样的事情:
for(var i=1; i <= number_of_charts; i++){
bar_char_data_array.push(barChartData);
var myBar = new Chart(ctx, {
type: 'bar',
data: bar_char_data_array[i-1],
options: {
tooltips: {
mode: 'label',
intersect: true
}
}
});
}
事实证明,javascript 将数组“bar_char_data_array”的每个元素都视为同一个对象,并且更改其中一个图表的数据会导致所有其他图表的数据发生更改。在悬停查看工具提示之前,我仍然不知道为什么所有图表都是正确的。尽管如此,我的问题的解决方案是删除 barChartData 变量。
for(var i=1; i <= number_of_charts; i++){
bar_char_data_array.push({
labels: ["2", "3", "4"],
datasets: []
});
var myBar = new Chart(ctx, {
type: 'bar',
data: bar_char_data_array[i-1],
options: {
tooltips: {
mode: 'label',
intersect: true
}
}
});
}