Ошибка при загрузке файлов - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу создать карту Европы, используя d3.js. Это часть моего кода:

(function() {
covData = [];

// code...

var files = ['nuts0.json', 'nuts2.json', 'data.csv'];
var promises = [];

promises.push(d3.json(files[0]));
promises.push(d3.json(files[1]));
promises.push(d3.csv(files[2]));

Promise.all(promises)
    .then(makeMap)
    .catch(function(err) {
        console.log('Error loading files!');
        throw err;
    });

function makeMap(data) {
    var nuts0 = data[0];
    var nuts2 = data[1];
    var cov = data[2];
    console.log('cov:', cov);

    // code ...

    covData = d3.nest()
        .key(function(d) {
            return d.YEAR;
        })
        .key(function(d) {
            return d.ANTIGEN;
        })
        .object(cov);
    console.log('covData:', covData);
} 
// other code...
})(); // end file function

В браузере я получаю эту ошибку:

cov: Array [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
Error loading files!
TypeError: covData[yearSelected] is undefined

Вот более полный код: http://plnkr.co/edit/8wJvay0FyAv6CtNo1Quh

Где проблема при загрузке файлов?

1 Ответ

0 голосов
/ 25 апреля 2018

Попробуйте изменить порядок в вашем коде. Что я имею в виду:

(function() {
covData = [];

// code...

var files = ['nuts0.json', 'nuts2.json', 'data.csv'];
var promises = [];

promises.push(d3.json(files[0]));
promises.push(d3.json(files[1]));
promises.push(d3.csv(files[2]));

Promise.all(promises)
    .then(makeMap)
    .catch(function(err) {
        console.log('Error loading files!');
        throw err;
    });

function makeMap(data) {
    var nuts0 = data[0];
    var nuts2 = data[1];
    var cov = data[2];
    console.log('cov:', cov);

    covData = d3.nest()
        .key(function(d) {
            return d.YEAR;
        })
        .key(function(d) {
            return d.ANTIGEN;
        })
        .object(cov);
    console.log('covData:', covData);

    // code ...
} 
// other code...
})(); // end file function

В вашем плункере много кода между console.log(cov) e кодом вложения. Поместите код о гнезде сразу под console.log(cov), и тогда он будет работать.

...