我知道这个问题已被提出,但我找不到很多有用的答案。 在绘制我的图表之前,我创建了将保留它的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"),问题来自代码执行的顺序。但是,我只想在用户点击按钮时准备并绘制我的图表。如何组织我的代码来解决此问题?
答案 0 :(得分:0)
这种情况正在发生,因为newDiv
并未在任何地方添加到DOM。你需要做这样的事情:
var currentDiv = document.getElementById("div1");
document.body.insertBefore(newDiv, currentDiv);