首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得角度2(或4) PrimeNg图表来异步刷新?

如何获得角度2(或4) PrimeNg图表来异步刷新?
EN

Stack Overflow用户
提问于 2017-03-31 05:14:36
回答 1查看 2.7K关注 0票数 1

问题:如何使PrimeNg图表异步刷新?

场景:我有一个下拉列表,我想根据用户选择来刷新图表。

我想我知道了这个问题的答案,因为我了解了角度变化检测,以及我需要如何重新分配一个对象来查看数据已经改变了(而不是更新对象内的数据),但是在阅读了许多其他图表甚至尝试了它们之后,我发现这个问题比我最初想象的要困难一些。

当我读到NG2图表的时候,它也建立了charts.js的指令,他们用一些隐蔽性的解决方案来从角度上解决这个问题。下面是他们的示例代码的摘录:

代码语言:javascript
复制
/**
* (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?

我知道我的数据在幕后,我只需要知道如何刷新图表(也就是说,想出一种角度正确识别我已经更改了数据的方法)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-31 05:15:39

我想要一个“真正的”解决方案,所以我去了消息来源。我被告知,在4.0.0-rc.1之后,图表的行为发生了变化。我安装了4.0.0-rc.1,并遵循下面的示例,并使其按预期工作。

代码语言:javascript
复制
   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://github.com/primefaces/primeng/issues/2235

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43132916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档