【发布时间】:2015-07-16 16:20:46
【问题描述】:
我正在使用dc.js 和crossfilter 在Meteor 中创建一些图表。一切都准备好了,我已经准备好了所有图表,但是有一个关于使图表反应的问题。我 subscribe 在 JavaScript 文件中客户端从 mongoDB 收集的数量;在这里,每次集合中的数据发生变化时,我都必须更新传递给交叉过滤器的数据。
假设,对于应用程序上的每个页面,我订阅了 8 个不同的集合,每个集合都有大约 30 个数据字段/列。每个字段中的这些数据每 30 秒左右不断变化或更新。现在的问题是,随着数据的变化,页面中的图表必须使用新数据进行更新并重新渲染所有图表。
我了解到 Meteor 中有几个方法可以让页面像 deps.autorun( ) 和 tracker.autorun( ) 一样具有响应性。问题是,我应该在上述函数中添加什么代码来使我的图表具有响应性?
PS:如果您需要任何澄清,请回复评论,问题已经很长了。
【问题讨论】:
-
你不应该在向 Crossfilter 添加数据时调用 dc.redrawAll() 吗?
-
对,
dc.redrawAll( )可能会起作用。但问题是我没有手动将数据添加到集合中。只要数据有任何微小的变化,图表就必须自动更新。像某些值total : 100更改为total : 200。请注意,只有值会发生变化,但不会向集合中添加额外的行。 -
您不能在 Crossfilter 中更改内部数据,对吗?
-
是的,所以您最好的选择是删除旧记录并添加一个新的更新的记录,或者只是推送一个增量(只要您只是进行求和和算)。无论哪种方式,当您的数据发生变化时,您都必须使用 crossfilter.add(),并且在您这样做之后,您需要调用 dc.redrawAll()。
标签: meteor charts dc.js crossfilter