2017-05-26 12 views
1

さらに、.csvファイルをdc.jsおよびd3で使用するためにcrossfilterにロードしようとしています。ただし、ndx = crossfilter(data_)d3.csv(...の中にないと動作しません。グローバル/外部変数(この場合はndx)内のd3を使用してデータをロードすることは可能ですか?d3を使用して.csvファイルをクロスフィルタにロードするにはどうすればよいですか?

var ndx; 

private method(){ 

     var data_; 

     d3.csv("samples.csv", function(data){ 

      var format = d3.timeParse("%m-%y"); 

      data.forEach(function(d: any) { 
       d.date = format(d.date); 
      }); 

      data_ = d3.csvParse(data); 
     }); 

     ndx = crossfilter(data_); 
} 

どのようにクロスフィルタにロードできますか? d3.csv(..コールの中でクロスフィルターを使用する義務はありますか?


ソリューション: 私は私の.CSVが.jsonになっ作られたと私は '同期' それをロードしました。以下を守ってください。

var ndx; 

private method(){ 

     var data_ = (function() { 
      var json: any = null; 
      $.ajax({ 
       'async': false, 
       'global': false, 
       'url': "samples.json", 
       'dataType': "json", 
       'success': function (data:any) { 
        json = data; 
       } 
      }); 
      return json; 
     })(); 

     ndx = crossfilter(data_); 
} 

守っ:

'非同期':

+0

あなたはjsFiddleを共有できますか –

+0

確かに、ここに行く:http://plnkr.co/edit/LLgY1NFOTU85MLJt79Fu?p=preview –

答えて

1

データが返されると、コールバック関数は、非同期を実行されるため、この問題が発生した偽の。つまり、チャートコードをコールバックの外に置くと、まだデータが返されていないため、定義した空の配列を取得することになります。

+0

あなたの答えをありがとう。その場合、グラフを管理する前にデータを利用できるようにするにはどうすればよいですか? –

+0

http://plnkr.co/edit/vPDoNhgn8PZdURvSlsv9?p=preview –

+0

@RogerAlmeidaLeiteは、回答とともにリンクを更新できませんでした。 :d –

関連する問題