如何让crossfilter.js识别正在添加或删除的项目

时间:2016-02-29 21:49:28

标签: meteor dc.js crossfilter

我正在开发一个meteor.js应用程序,该应用程序利用d3.js和crossfilter.js创建交互式多图表交叉过滤仪表板。 所需功能的一个重要部分是,当记录被添加到欠载MongoDB集合或从中删除时,可以实时调整各个图表。 反应性部分不是问题 -

Template.chart.rendered = function () {

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

问题是让交叉滤波器知道这些变化,我希望这会改变各个图表,以便根据交叉滤波器的变化进行重新调整。

只需将以下行添加到自动运行:

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

没有任何区别。 我还需要做些什么才能调整这些图表?

1 个答案:

答案 0 :(得分:2)

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

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