2016-04-19 5 views
0

Я пытаюсь сделать диаграмму Google, которая извлекает данные из скрытого поля на веб-странице.Как добавить строки в Javascript DataTable из строки, содержащей массив?

Если добавить данные непосредственно через data.addRows он работает отлично:

google.charts.load('current', {packages: ['corechart', 'line']}); 
google.charts.setOnLoadCallback(drawChart); 

function drawChart() { 
     var data = new google.visualization.DataTable(); 
     data.addColumn('date', 'Date'); 
     data.addColumn('number', 'Rainfall');  

     data.addRows([[new Date(2000, 8, 5), 56], [new Date(2000, 8, 6), 22], [new Date(2000, 8, 7), 44], [new Date(2000, 8, 8), 40], [new Date(2000, 8, 9), 62]]); 

     var options = { 
     title: 'Rainfall' 
     }; 

     var chart = new google.visualization.LineChart(document.getElementById('chart_div')); 
     chart.draw(data, options); 
    } 

Однако, если я пытаюсь создать строку, содержащую массив, а затем добавить его с помощью addRows он не работает :

google.charts.load('current', {packages: ['corechart', 'line']}); 
google.charts.setOnLoadCallback(drawChart); 

function drawChart() { 
     var data = new google.visualization.DataTable(); 
     data.addColumn('date', 'Date'); 
     data.addColumn('number', 'Rainfall');  

     var myData = "[[new Date(2000, 8, 5), 56], [new Date(2000, 8, 6), 22], [new Date(2000, 8, 7), 44], [new Date(2000, 8, 8), 40], [new Date(2000, 8, 9), 62]]" 

     data.addRows(myData); 

     var options = { 
     title: 'Rainfall' 
     }; 

     var chart = new google.visualization.LineChart(document.getElementById('chart_div')); 
     chart.draw(data, options); 
    } 

Как добавить данные в строку в DataTable?

JSFiddle: https://jsfiddle.net/oo5w6ghf/4/

ответ

1

Фигурные это - мне нужно добавить «Eval» в строку:

var myData = eval("[[new Date(2000, 8, 5), 56], [new Date(2000, 8, 6), 22], [new Date(2000, 8, 7), 44], [new Date(2000, 8, 8), 40], [new Date(2000, 8, 9), 62]]") 
+0

До тех пор, пока вы в курсе советы против использования Eval и счастливы принять на эти риски, все в порядке. Я не вижу другого способа сделать это, но вам просто нужно понять, что использование eval - это как манипуляция бензопилой - отлично, если вы знаете, что делаете, и можете контролировать свою среду. Опасный и кровавый в противном случае. – enhzflep

Смежные вопросы