2016-06-08 2 views
0

Я загружаю данные, а затем разрешаю его фильтровать с помощью флажка. Я должен анализировать поле даты в данных каждый раз, когда данные обновляются с помощью флажка. Ниже мой сценарий. Это работает для самого первого щелчка на флажке, но не для последующих кликов ... И производит эту ошибку: Любые идеи, почему это происходит?Отфильтровать данные с помощью D3

Uncaught TypeError: t.slice is not a function

var apiData = [ {resource_type: "Books", date_posted: "3/8/2007",total_donations:43}, 
        {resource_type: "Supplies", date_posted: "11/11/2002",total_donations:65}]; 

$(":checkbox").change(function() { 
    var dataSet = apiData.filter(function(el) { 
    var checkboxes = document.getElementsByName('result'); 
    var index = 0; 
    var found = false; 
    while (index < checkboxes.length) { 
     if (checkboxes[index].checked && el.resource_type == checkboxes[index].value) found = true; 
     ++index; 
    } 
    return found; 
    }); 
    ///Need to figure out how to evaluate this!!!***********************************************************************************  
    var dateFormat = d3.time.format("%m/%d/%Y"); 
    dataSet.forEach(function(d) { 
    d.date_posted = dateFormat.parse(d.date_posted); 
    d.date_posted.setDate(1); 
    d.total_donations = +d.total_donations; 
    }); 
}); 
+1

любой шанс, что мы можем увидеть значения 'apiData'? – torresomar

+0

Я думаю, что так поступают данные. Я, возможно, нашел ключ ... Похоже, что при первом щелчке флажка он анализирует данные. Затем во втором клике он снова пытается проанализировать уже проанализированные данные ... Может быть, это проблема? Возможно, если я загружу apiData и проанализирую его, а затем примените фильтрацию, это сработает ... попробует и обновит. –

+0

Обновление! Это была проблема. После анализа данных он не может быть снова разобран. Итак, при изменении флажка после первого изменения он ошибся. Я взял функцию разбора вне функции изменения флажка. Спасибо за помощь. –

ответ

0

date_posted поле, необходимое, чтобы быть разобран только один раз за пределами функции .Кнопки(). Поле синтаксического анализа не может быть проанализировано снова.

var apiData = [ {resource_type: "Books", date_posted: "3/8/2007",total_donations:43}, 
         {resource_type: "Supplies", date_posted: "11/11/2002",total_donations:65}]; 

    var dateFormat = d3.time.format("%m/%d/%Y"); 
    apiData.forEach(function(d) { 
    d.date_posted = dateFormat.parse(d.date_posted); 
    d.date_posted.setDate(1); 
    d.total_donations = +d.total_donations; 
    }); 

$(":checkbox").change(function() { 
    var dataSet = apiData.filter(function(el) { 
    var checkboxes = document.getElementsByName('result'); 
    var index = 0; 
    var found = false; 
    while (index < checkboxes.length) { 
     if (checkboxes[index].checked && el.resource_type == checkboxes[index].value) found = true; 
     ++index; 
    } 
    return found; 
    }); 
}); 
Смежные вопросы