2016-02-29 62 views
0

我正在研究meteor.js应用程序,该应用程序利用d3.js和crossfilter.js创建交互式多图交叉过滤仪表板。 所需功能的一个重要组成部分是在将某个记录添加到不正确的MongoDB集合中或将其从中删除时,实时调整各个图表。 的反应部分是不是一个问题 -如何使crossfilter.js识别正在添加或删除的项目

Template.chart.rendered = function() { 

     Tracker.autorun(function(){ 
       yelp_data = Yelp.find().fetch(); 
      console.log('autorun is called'); 
     }); 
} 

的问题是使crossfilter认识的变化,我希望它,将迫使个别图表响应重新调整到crossfilter变化。

通过简单地添加以下行自动运行:

Tracker.autorun(function(){ 
       yelp_data = Yelp.find().fetch(); 
       ndx = crossfilter(yelp_data); 
      console.log('autorun is called'); 
     }); 

没有任何区别。 我还需要做些什么来使这些图表适应?

+0

我重组我的自动运行代码作为这样Tracker.autorun(函数(){ yelp_data = {}; NDX = crossfilter(); yelp_data = Yelp.find()取(); ndx.add (yelp_data); 如果(会话[ '加载'] ===真){ dc.redrawAll();} 的console.log( '自动运行被称为'); });但这没有改变 - 图表(dc.js)不重绘 –

回答

2

您需要使用crossfilter.addcrossfilter.remove来添加和删除已创建的Crossfilter中的数据。 Crossfilter.remove很烦人,因为它要求您更改过滤器以删除特定的记录。这是一个非常长的待办事项列表来修复this pull request允许删除任意记录。

Crossfilter更新后,您需要触发更新基于Crossfilter的任何图表。如果您使用的是dc.js,则只需将dc.redrawAll调用到您定义的任何图表组即可。

相关问题