我正在开发一个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');
});
没有任何区别。 我还需要做些什么才能调整这些图表?
答案 0 :(得分:2)
您需要使用crossfilter.add和crossfilter.remove来添加和删除已创建的Crossfilter中的数据。 Crossfilter.remove很烦人,因为它要求您更改过滤器以删除特定记录。它是一个非常长的待办事项列表来修复this pull request以允许删除任意记录。
更新Crossfilter后,您需要触发基于Crossfilter的任何图表的更新。如果您使用的是dc.js,这只是为您定义的任何图表组调用dc.redrawAll。