在 Google Charts 函数中传入参数

use*_*120 4 javascript charts google-visualization

我正在使用 Google Charts 来显示一些数据。我初始化我想要的图表,然后调用一个函数来格式化我的数据。然后该函数将调用 drawChart(parameter) 函数来绘制图表。该google.charts.setOnLoadCallback(drawChart(parameter));函数执行此操作。但是,当我这样做时,它给了我这个错误:Uncaught TypeError: Cannot read property 'DataTable' of undefined这是我的代码:

HTML

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script type="text/javascript" src="chart.js"></script>
    </head>
    <body>
        <div id="chart_div"></div>

        <script>
            google.charts.load('current', {
            'packages': ['annotationchart']
            });

        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

图表.js

function formatData(worksheet) {
       //excess function removed to make question simpler.

       google.charts.setOnLoadCallback(drawChart(dataArr));
   }

  function drawChart(dataArr) {
       var data = new google.visualization.DataTable();
       data.addColumn('datetime', 'Time');
       data.addColumn('number', 'In');

       data.addColumn('number', 'Out');

       data.addRows([
          [new Date(2017, 2, 15, 06, 00, 00), 12400,
            10645],
          [new Date(2017, 2, 15, 07, 00, 00), 24045,
            12374
          ],
          [new Date(2017, 2, 15, 08, 00, 00), 35022,
            15766
          ],
          [new Date(2017, 2, 15, 09, 00, 00), 12284,
            34334
          ],
          [new Date(2017, 2, 15, 10, 00, 00), 8476,
            66467
          ],
          [new Date(2017, 2, 15, 11, 00, 00), 0,
            79463
          ]
        ]);

       var chart = new google.visualization.AnnotationChart(document.getElementById('chart_div'));

       chart.draw(data);
   }
Run Code Online (Sandbox Code Playgroud)

当我删除参数时,图表会显示出来并且没有错误。我怎样才能让它在我传入参数时能够显示图表而不给我那个错误?

Whi*_*Hat 7

setOnLoadCallback引用 a -->function
不是a -->的结果function()

像这样试试...

function formatData(worksheet) {
   google.charts.setOnLoadCallback(function () {
     drawChart(dataArr);
   });
}
Run Code Online (Sandbox Code Playgroud)