2016-02-29 40 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調用到您定義的任何圖表組即可。

相關問題