Динамические данные с Google Charts - PullRequest
3 голосов
/ 02 февраля 2012

Мне нужно, чтобы моя диаграмма Google рисовалась с динамическими данными, поэтому я храню ее в переменной:

var rowData = "[ [{ v: 'Mike', f: 'Mike' }, '', 'The President'], [{ v: 'Jim', f: 'Jim Vice President' }, 'Mike', 'VP'], ['Alice', 'Mike', ''], ['Bob', 'Jim', 'Bob Sponge'], ['Carol', 'Bob', ''] ]";

Затем я передаю эту переменную в функцию Google:

    google.load('visualization', '1', { packages: ['orgchart'] });
    //google.setOnLoadCallback(drawChart);
    function drawChart(json) {
        data = new google.visualization.DataTable();
        data.addColumn('string', 'Name');
        data.addColumn('string', 'Manager');
        data.addColumn('string', 'ToolTip');
        data.addRows([
            rowData
        ]);
        chart = new google.visualization.OrgChart(document.getElementById('orgChart'));
        chart.draw(data, { allowHtml: true });
        google.visualization.events.addListener(chart, 'select', selectHandler);
    }

Однако, это дает мне «Каждая строка должна быть либо нулевой, либо массивом».ошибка.Если я удаляю переменную и передаю данные напрямую, она работает нормально:

    ...
    data.addRows(
        [ [{ v: 'Mike', f: 'Mike' }, '', 'The President'], [{ v: 'Jim', f: 'Jim Vice President' }, 'Mike', 'VP'], ['Alice', 'Mike', ''], ['Bob', 'Jim', 'Bob Sponge'], ['Carol', 'Bob', ''] ]
    );
    ...

Может кто-нибудь помочь мне сказать, что здесь происходит?Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

В вашем первом примере данные представляют собой одну строку, во втором примере ваши данные представляют собой структуру JavaScript массивов и отдельных строк / значений.

Трудно рекомендовать лучшую практику, не зная, откуда вы получаете динамические данные, но вы должны быть в состоянии удалить самые внешние цитаты, подобные этой, и заставить ее работать:

var rowData = [ [{ v: 'Mike', f: 'Mike' }, '', 'The President'], [{ v: 'Jim', f: 'Jim Vice President' }, 'Mike', 'VP'], ['Alice', 'Mike', ''], ['Bob', 'Jim', 'Bob Sponge'], ['Carol', 'Bob', ''] ];
1 голос
/ 02 февраля 2012

При заключении в двойные кавычки rowData становится строкой, а для API необходим массив.Используйте это так

var rowData = [ [{ v: 'Mike', f: 'Mike' }, '', 'The President'], [{ v: 'Jim', f: 'Jim Vice President' }, 'Mike', 'VP'], ['Alice', 'Mike', ''], ['Bob', 'Jim', 'Bob Sponge'], ['Carol', 'Bob', ''] ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...