如何使交叉过滤器.js识别正在添加或删除的项目



我正在开发一个 meteor.js 应用程序,它利用 d3.js 和交叉过滤器.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');
        });

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

您需要使用 crossfilter.add 和 crossfilter.remove 在已创建的交叉过滤器中添加和删除数据。Crossfilter.remove 很烦人,因为它要求您就地更改过滤器以删除特定记录。修复此拉取请求以允许删除任意记录的待办事项列表很长。

更新交叉筛选器

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

最新更新