2016-03-09 209 views
0

我有ChartJS的圖表生成。我在multipleTooltipLabel模板中包含datasets.label並面臨更新問題。更改數據集標籤並運行chart.update()時,工具提示未更新。我創建了一個JSFiddle demonstrating the issueChartJS:更新工具提示

我使用包括在提示數據集的標籤代碼:

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

旁邊那個選項我跟着ChartJS usage example爲線條圖。

更改標籤和更新圖表:提示中顯示

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

標籤不更新......

我在ChartJS源代碼一看,想通了,showTooltip function是帶一個ChartElements陣列沒有更新。

更新:我可能會緩存該問題。 labeldatasetset on each point element,如果更改則不更新。當繪製工具提示時,showTooltip使用此「緩存」數據集標籤。也許這不應該是StackOverflow的問題,而是ChartJS的錯誤報告。

回答

1

我找到了一個解決方案:

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

這也可能是它應該做的方式。 update method的Chart.js文檔說您應該設置myLineChart.datasets[0].points[2].value = 50;來更改值。這是令人困惑的,因爲創建數據集期望data屬性中的值。 points由初始化的Chart.Line類生成。其他圖表類型的命名可能不同(例如,條形圖的bars)。

我不太確定myLineChart.datasets[0].label值是用在某個地方還是可以保持不變。

0

我可以通過更改原始數據對象(data.datasets [0] .label ='updated label')然後運行myNewChart.initialize(data)來解決您的問題。