2015-06-13 65 views
0

正如標題所示,我正在使用c3.js在Meteor應用程序中繪製圖表。但是,所有示例都會靜態設置數據源的變量。MongoDB Collection作爲cs.js流星應用程序的數據源

我找不到在Mongo上使用c3的正確方法。說我有一個簡單的模板,如下面

<template name="model1"> 
    <div class="chart"></div> 
</template> 

,然後圖表代碼如下

Template.model1.rendered = function() { 
    var chart = c3.generate({ 
     bindto: this.find('.chart'), 
     data: { 
      json: [ 
       {name: 'www.site1.com', upload: 100 
        , download: 200, total: 400} 
      ], 
      keys: { 
       value: ['upload', 'download'] 
      } 
     }, 
     axis: { 
      x: { 
       // type: 'category' 
      } 
     } 
    }); 
}; 

我怎麼能填充與查詢蒙戈,像Models.find({"model" : "model1"},{"actual" : 1, "_id": 0})的結果json領域。

運行從蒙戈相當於殼db.models.find({"model" : "model1"},{"actual" : 1, "_id": 0})回報{"actual" : [ 1, 2, 3 ] }

我只是無法弄清楚如何處理這個

回答

3

您可以定義Meteor.methodsMeteor.call檢索數據,並將其填充到D3。

methods.js

Meteor.methods({ 

    data: function(){ 

    check(arguments, [Match.Any]); 

    return Models.find({"model" : "model1"},{"actual" : 1, "_id": 0}).fetch(); 

    } 

}); 

template.html

Template.model1.onRendered(function() { 

    var self = this; 

    Meteor.call('data', function (error, result) { 

    var chart = c3.generate({ 
     bindto: self.find('.chart'), 
     data: { 
     json: result, 
     keys: { 
      value: ['upload', 'download'] 
     } 
     }, 
     axis: { 
     x: { 
      // type: 'category' 
     } 
     } 
    }); 

    }); 

}); 
+0

這看起來是我要找的,但是當它的內'Meteor.call'一些圖表不渲染原因。任何想法爲什麼? –

+1

'this'的範圍發生了變化。看到我更新的答案。 –

+0

非常感謝您的幫助。 –

相關問題