2016-04-19 28 views
0

我用這個代碼:d3js:d3.csv和它的數據消失

var map_json; // in global scope 
var map; 
... 
function get_data() { 
    map_json = d3.json("data/russia_1e_7sr.json", function (e, d) { 
     map = d; 
    }); 
    // ... draw map 
} 

如果我調試代碼,然後我看到的結果。 如果我關閉調試器然後刷新頁面,結果就會消失。

我建議發生的東西與對象的內存。 但是什麼?

使用d3獲取數據的正確方法是什麼? 是的,我看到一個這樣的例子是:

d3.csv("file.csv", function(e,d) { 
    // ... use d 
    // all things processed inside this function 
} 

如果我想從不同的來源加載多個數據部分組成?

+1

這是一個異步'回調函數,這意味着它不會與程序的其餘部分以線性順序觸發。因此,您的繪圖代碼在文件加載之前觸發。你應該調用一個函數從線性流的回調中繪製地圖。要加載多個源代碼,可以嵌套加載(在另一個回調中加載),或者定義一個計數器,每次回調時加一個計數器,當它等於您調用最終函數的數據部分的數量時。 – JSBob

+0

我剛剛開始與js。感謝您的好解釋:我明白了。 –

回答

0

您需要轉移抽獎地圖位:

var map_json; // in global scope 

... 
function get_data() { 
    map_json = d3.json("data/russia_1e_7sr.json", function (e, d) { 
     var map;= d; 
     // ... draw map 
    }); 
} 

map不會填充但在這裏你有它。