我正在尝试将.csv文件加载到crossfilter中,以便与dc.js和d3一起使用。但是,如果ndx = crossfilter(data_)
不在d3.csv(...
内,则无效。是否可以在全局/外部变量(在本例中为ndx
)中使用d3加载数据?
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_);
}
如何将其加载到crossfilter中?
我是否有义务在d3.csv(..
电话中使用crossfilter?
解决方案: 我让我的.csv变成了一个.json,我同步加载它#39;请注意以下内容。
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_);
}
观察:
' async':false
答案 0 :(得分:1)
这是因为一旦返回数据,回调函数就会以异步执行。这意味着如果您将图表代码放在回调之外,您将获得您定义的空数组,因为尚未返回任何数据。