Ionic 3 Angular Chart.js更新数据
我正在将Chart.js与我的Ionic 3 Angular应用程序一起使用。一切正常,除了我无法刷新实际更改的条的数据 代码如下:Ionic 3 Angular Chart.js更新数据,angular,chart.js,ionic3,Angular,Chart.js,Ionic3,我正在将Chart.js与我的Ionic 3 Angular应用程序一起使用。一切正常,除了我无法刷新实际更改的条的数据 代码如下: ionViewDidLoad(){ this.barChart = new Chart(this.barCanvas.nativeElement, { type: 'bar', data: { labels: ["Safeway", "CVS", "Walgreens", "Bon Appe
ionViewDidLoad(){
this.barChart = new Chart(this.barCanvas.nativeElement,
{
type: 'bar',
data: {
labels: ["Safeway", "CVS", "Walgreens", "Bon Appetit"],
datasets: [{
label: "Pepsi",
backgroundColor: "#002F6F",
data: this.pepsiData
}, {
label: "Coke",
backgroundColor: "#F50000",
data: this.cockData
}, {
label: "V8",
backgroundColor: "orange",
data: [83,19,32,34]
}]
},
options: {
title: {
display: true,
text: 'Brands'
}
}
});
}
一个单独的按钮将pepsiData的数据更新为:
this.pepsiData[3] = 80;
但这不会刷新特定的栏。我现在的丑陋解决方案是重新绘制整个图表,这看起来是一个糟糕的解决方案。如chart.js文档中所述,如果希望在创建图表后更新图表中的数据,则需要调用
chart.update()
:
添加数据然后更新图表的示例:
function addData(chart, label, data) {
chart.data.labels.push(label);
chart.data.datasets.forEach((dataset) => {
dataset.data.push(data);
});
chart.update();
}
完成更新函数中的数据更改后,只需添加更新行代码,如下所示:
this.pepsiData[3] = 80;
myChart.update();
这是init函数,对吗?刷新逻辑在哪里?您在哪里触发刷新?我怀疑您需要订阅某些内容,并使用事件处理程序来侦听图表并根据更改的数据重新绘制图表。如果它来自表单,请确保使用ReactiveFormsModule。您可以订阅更改事件并使用它重新绘制。在没有看到整个解决方案的情况下,当数据发生变化时,很难给出明确的答案。在更改数据后,您需要调用
this.barChart.update()
谢谢@duanx这正是我所需要的!