2015-06-13 94 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

非常感谢您的帮助。 –

相关问题