我正在使用最新的Chart.bundle.js在同一页上创建多个堆叠条形图。例如,我有3个图表和2个数据集。图表是正确的,但每个图表上的工具提示总是相同的,并显示错误的值。screenshot link。所有的值都是零,这显然是错误的。
工具提示模式是索引,每个图表的画布都有不同的id,数据集变量都不同。
发布于 2016-12-21 17:30:34
尝试将我的代码发布到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
}
}
});
}
发布于 2017-11-28 05:10:46
我的回答有点类似于“女皇-朱丽叶”的回答。
我有一个共享的配置变量,数据键是在循环中添加和更新的。尽管我在页面上的多个chart.js对象显示了正确的数据,但工具提示只显示在一个(随机)图表上。解决方案是在我的循环中声明并填充整个配置。
https://stackoverflow.com/questions/41243132
复制相似问题