chart.js中多个图表上的工具提示显示错误的值

时间:2016-12-20 13:08:38

标签: javascript charts chart.js

我使用最新的Chart.bundle.js在同一页面上创建多个堆叠条形图。例如,我有3个包含2个数据集的图表。图表是正确的,但每个图表上的工具提示始终相同并显示错误的值。 screenshot link。所有的值都是零,这显然是错误的。

工具提示模式是索引,每个图表的画布都有不同的id,数据集变量都是不同的。

2 个答案:

答案 0 :(得分:0)

尝试在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
                        }
                    }
                });
}      

答案 1 :(得分:0)

我的解决方案与@ queen-juliet的答案有些相似。

我有一个共享配置变量,数据键在循环中添加和更新。尽管我在页面上显示的多个chart.js对象显示的是正确的数据,但工具提示仅显示在一个(随机)图表上。解决方案是在我的循环中声明并填充整个配置。