2015-02-05 56 views
0

這裏是我用於使用Meteor在網頁上呈現pieChart的JS代碼。我遇到的問題是,這段代碼幾乎可以工作,除了圖表顯示時顯示在傳說和標籤上,但我們看不到派(它只是空的)。 JavaScript代碼是流星餅圖並沒有完全顯示

[我無法張貼在這裏的圖片]

if (Meteor.isClient) { 

Template.pienvd3.rendered = function() { 

    nv.addGraph(function() { 
       var pchart = nv.models.pieChart() 
       .x(function(d) { return d.label }) 
       .y(function(d) { return d.value }) 
       .showLabels(true); 

       d3.select("#piechart svg") 
       .datum(pieVar.find().fetch()) 
       .transition().duration(350) 
       .call(pchart); 

       return pchart; 
       }); 
};} 

這是我收集MongoDB中的名字「pienvd3」

{ 
"_id" : ObjectId("54d37d5b30cd72c0dde2611b"), 
"label" : "One", 
"value" : 29.765957771107 
} 
{ 
"_id" : ObjectId("54d37d5b30cd72c0dde2611c"), 
"label" : "Two", 
"value" : 0 
} 
--- so on till Eight--- 
{ 
"_id" : ObjectId("54d37d5b30cd72c0dde26121"), 
"label" : "Seven", 
"value" : 13.925743130903 
} 
{ 
"_id" : ObjectId("54d37d5b30cd72c0dde26122"), 
"label" : "Eight", 
"value" : 5.1387322875705 
} 

我發表集合並宣佈它

Meteor.publish(null, function() { 
      return pieVar.find(); 
      }); 
pieVar = new Meteor.Collection("pienvd3"); 
pieVar.allow({ 
     insert: function() { 
     return true; 
     }, 
     update: function() { 
     return true; 
     }, 
     remove: function() { 
     return true; 
     } 
     }); 

現在我實際上不能明白究竟是什麼問題。 P.S:我需要使這個圖表成爲被動的,並且我已經包含了d3的所有必要軟件包。當我刷新頁面,即使此圖像消失說找不到數據

謝謝

+0

我也得到RangeError:超出最大調用堆棧大小作爲控制檯中的錯誤 – Greenhorn 2015-02-05 14:51:09

回答

0

謝謝大家.. ..不需要對代碼進行任何更正。我通過更改文檔的_id來解決問題。我給自己的_id而不是自動生成的_ids在mongoldb

0

我不能因低信譽發表評論,但您訂閱您的出版物?

Meteor.subscribe('pienvd3'); 
+0

是的,我沒有訂閱發佈,但沒有任何變化。我嘗試訂閱它作爲 'Meteor.subscribe('pienvd3'); '也可以通過 Meteor.subscribe(「pieData」); Meteor.publish(「pieData」,function(){ return pieVar。找(); }); – Greenhorn 2015-02-06 03:36:05

0

更改函數外的返回值。

Template.pienvd3.rendered = function() { 

    nv.addGraph(function() { 
       var pchart = nv.models.pieChart() 
       .x(function(d) { return d.label }) 
       .y(function(d) { return d.value }) 
       .showLabels(true); 

       d3.select("#piechart svg") 
       .datum(pieVar.find().fetch()) 
       .transition().duration(350) 
       .call(pchart);   
       }); 
    return pchart; 
};} 

,喜歡@johnnytop說,如果你有autopublish包中取出,蜜蜂一定要訂閱集合。

Meteor.subscribe('pienvd3'); 

Router.route('/testPage', {name: 'testPage'}); 
this.route('testPage', { 
    path: '/testPage', 
    waitOn: function(){ 
     return Meteor.subscribe("pieVar"); 
    }, 
    data: function(){ 
     return return pieVar.find();; 
    } 
}); 

而且idont知道爲什麼,但要發佈Null數據

改變了這一點。

Meteor.publish('pieVar' function() { 
      return pieVar.find(); 
      }); 

還聲明這個集合lib文件夾內這樣/lib/collections.js

pieVar = new Meteor.Collection("pieVar"); 

這可能是因爲某些原因,你沒有在客戶端的數據。

  1. 您訂閱錯誤(我需要看到認購方式)
  2. 收集其在客戶端上不可用(聲明它們的 lib文件夾)
+0

所以它應該是'nv.addGraph函數',你正在使用什麼'package',我可以看到文檔嗎? – Ethaan 2015-02-06 06:41:06

+0

如果你上傳一個這個 – Ethaan 2015-02-06 07:12:47

+0

ok的下載的Meteorpad將會很好! – Ethaan 2015-02-06 07:22:38