使动态生成的Google图表具有响应性

时间:2018-09-15 11:22:15

标签: javascript jquery google-visualization responsive

我按照以下示例使用以下代码使Google图表具有响应性:

$(document).ready( function () {
    //Make Chart(s) Responsive
    $(window).resize(function(){
        drawVisualization();
    });

这在我的html原型中很好用,但是我现在正在使用PHP生成图表。例如,我可能必须生成n个图表,以便遍历PHP中的一组数据以生成图表将驻留的DIV,JSON数据等等。

我的DIV生成为唯一,例如:

<div id="visualization_**identifier**" style="height:200px;">

然后我为每个图表创建一个函数来处理render.drawing,如果需要,我可以对其进行唯一的命名:

function drawVisualization_**identifier**()

这一切正常,但是jQuery代码要求我依次调用每个drawVisualization_**identifier**()来刷新图表,有没有办法动态创建列表并刷新它们?

我假设我可以将一个类添加到我的vizualization div中,并使用典型的jQuery代码查询它们(尽管我不确定如何做到)-如果可以做到,我可以在调用每个{{1 }}函数执行刷新?

某种程度上的东西(非常粗略!)

drawVisualization_**identifier**()

任何帮助将不胜感激,尽管我感觉我正在使用jQuery和图表,但这使我头疼。似乎很奇怪,就好像Google Charts一样出色,似乎没有“调整大小时重新绘制”的功能。

1 个答案:

答案 0 :(得分:0)

似乎在放弃并发布我的问题后,我倾向于有一个好主意。我意识到在生成PHP图表的过程中,我还可以创建(在PHP中)一个javaScript函数来进行刷新,然后从jQuery调整大小中调用该函数。下面的PHP遵循创建我的图表/ divs /回调函数的循环,并且看起来运行良好。

#Generate Chart Refresh Function to call on Window Resize
print('<script>');
print('function drawVisualization() {');
foreach($entity as $chartid){
    print('   drawVisualization_'.$chartid["uniqueIDperChart"].'();');
}
print('};');
print('</script>');

因此,如果我有四个图表,则该函数将具有四个drawVizualization_uniqueID();调用,然后从绑定到窗口调整大小的jQuery事件中调用函数drawVisualization()。