Google Chart - 容器未定义

时间:2016-05-20 12:44:52

标签: javascript html angularjs google-visualization

我知道这个问题已被提出,但我找不到很多有用的答案。 在绘制我的图表之前,我创建了将保留它的div:

var newDiv = document.createElement('div');
newDiv.id = ...
newDiv.class = ...
...

然后我将它推入一个数组中,该数组将通过ng-repeat:

与AngularJS一起显示
$scope.arrayDiv.push(newDiv);

然后我创建ChartWrapper:

var chart = new google.visualization.ChartWrapper({
    'chartType': chartType, 
    'containerId': $scope.arrayDiv[i].id, 
    ....
});

我创建了DataTable(填写它,但这不是问题的一部分)。

var data = new google.visualization.DataTable();

最后,我画它(或至少尝试):

chart.setDataTable(data);
chart.draw();

正如你猜测的那样,这就是我得到错误Container is not defined的地方。

我尝试这样做来检查:console.log($scope.arrayDiv[i].id),我得到了预期的ID。

根据我对其他问题的理解(例如Google Charts ColumnChart won't render because "Container is not defined"),问题来自代码执行的顺序。但是,我只想在用户点击按钮时准备并绘制我的图表。如何组织我的代码来解决此问题?

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为newDiv并未在任何地方添加到DOM。你需要做这样的事情:

var currentDiv = document.getElementById("div1"); 
document.body.insertBefore(newDiv, currentDiv);