问题:如何使PrimeNg图表异步刷新?
场景:我有一个下拉列表,我想根据用户选择来刷新图表。
我想我知道了这个问题的答案,因为我了解了角度变化检测,以及我需要如何重新分配一个对象来查看数据已经改变了(而不是更新对象内的数据),但是在阅读了许多其他图表甚至尝试了它们之后,我发现这个问题比我最初想象的要困难一些。
当我读到NG2图表的时候,它也建立了charts.js的指令,他们用一些隐蔽性的解决方案来从角度上解决这个问题。下面是他们的示例代码的摘录:
/**
* (My guess), for Angular to recognize the change in the dataset
* it has to change the dataset variable directly,
* so one way around it, is to clone the data, change it and then
* assign it;
**/http://valor-software.com/ng2-charts/
尽管他们对数据进行压缩和分析以复制和重新分配数据,而且似乎对他们有效,但我在PrimeNg中尝试了这种方法,但没有成功。
在其他示例中,它们对图表数据执行.slice()操作,或者直接访问CHART_DIRECTIVES并对图表进行.update()。他们还会等待绘制图表,直到数据异步加载,这只是第一次加载,并不能解决我想要的行为。Why should I practice Test Driven Development and how should I start?
我知道我的数据在幕后,我只需要知道如何刷新图表(也就是说,想出一种角度正确识别我已经更改了数据的方法)。
发布于 2017-03-31 05:15:39
我想要一个“真正的”解决方案,所以我去了消息来源。我被告知,在4.0.0-rc.1之后,图表的行为发生了变化。我安装了4.0.0-rc.1,并遵循下面的示例,并使其按预期工作。
changeData() {
this.changedData = {
labels: ['X','Y','Z'],
datasets: [
{
data: [200, 200, 50],
backgroundColor: [
"#50f442",
"#f441c4",
"#4195f4"
],
hoverBackgroundColor: [
"#50f442",
"#f441c4",
"#4195f4"
]
}]
}
this.data = Object.assign({}, this.changedData);
}https://stackoverflow.com/questions/43132916
复制相似问题