使用Google Visualization动态调用构造函数

Dynamically calling a constructor with Google Visualizations?

本文关键字:调用 构造函数 动态 Visualization Google 使用      更新时间:2023-09-26

我正在使用谷歌可视化,我正在努力解决一些问题。这对我来说似乎很简单,但我似乎找不到合适的Javascript文档,也找不到谷歌文档中能让我清楚地知道如何做到这一点的文档。

现在,我在js文件中有一个函数,看起来像这样:

  function drawChart(raw,columns,options,chart) {
    var data = new google.visualization.arrayToDataTable(JSON.parse(raw));
    var view = new google.visualization.DataView(data);
    view.setColumns(columns);
    chart.draw(view, options);
  }

除了构造函数的一个令人讨厌的问题外,它看起来很好

看看函数的调用示例:

drawChart(grabarray("?warid="+warid+"&type=0"),[0, 1,{ calc: "stringify", sourceColumn: 1,type: "string",role: "annotation" },2],
    {
      title: "Attempted actions by player",
    },new google.visualization.BarChart(destination);

(注意AJAX做得很好,但我删掉了它,使这个例子更有意义)

正如你在上面看到的,我被迫在javascript中直接有以下行:

new google.visualization.BarChart(destination)

当我只想在我的AJAX返回中包含值"BarChart",这样我就可以做一些类似的事情

new google.visualization("BarChart",destination)

这将使我能够调用create其他谷歌可视化,所有这些都使用相同的drawChart函数。

TL:DR,我如何动态调用构造函数来实现这一点:

new google.visualization("BarChart",destination)
new google.visualization("PieChart",destination)
new google.visualization("LineGraph",destination)

这样试试。。。

new google.visualization["BarChart"](destination)