ChartJS:更新工具提示

时间:2016-03-09 12:55:29

标签: chart.js

我正在使用ChartJS进行图表构建。我在multipleTooltipLabel模板中包含datasets.label并面临更新问题。更改datasets.label并运行chart.update()时,工具提示不会更新。我创建了一个JSFiddle demonstrating the issue

我用来在工具提示中包含数据集标签的代码:

var options = {
  multiTooltipTemplate: "<%=datasetLabel%>: <%= value + ' %' %>"
};

除了该选项,我跟随ChartJS usage example获取折线图。

更改标签并更新图表:

myNewChart.datasets[0].label = 'updated label';
myNewChart.update();

工具提示中显示的标签未更新...

我查看了ChartJS源代码,发现用ChartElements数组调用了showTooltip function,但未更新。

更新:我可能会缓存此问题。 label的{​​{1}}为set on each point element,如果更改,则不会更新。在绘制工具提示时,dataset使用了此“缓存”数据集标签。也许这不应该是StackOverflow上的问题,而是ChartJS的错误报告。

2 个答案:

答案 0 :(得分:1)

我找到了解决方案:

myNewChart.datasets[0].points.forEach(function(point) {
  point.datasetLabel = 'updated label';
});

这也可能是它应该做的方式。 Chart {js update method的文档说你应该设置myLineChart.datasets[0].points[2].value = 50;来更改值。创建数据集中令人困惑的原因需要data属性中的值。 points由init上的Chart.Line类生成。其他图表类型的命名可能不同(例如条形图的bars)。

我不确定myLineChart.datasets[0].label值是否在某处使用或者是否可以保持不变。

答案 1 :(得分:0)

我可以通过更改原始数据对象(data.datasets [0] .label =&#39;更新标签&#39;)然后运行myNewChart.initialize(数据)来解决您的问题。