我正在使用谷歌图表并遇到一些误解的东西。
所以简而言之,我有很多图表要绘制,而不是列出它们,我想做一个循环。但是,当我转换"呼叫列表"进入for..in循环,只有数组中的最后一个元素似乎"工作"。
在那里,你可以看到一个名为" allData"的对象。其中包含许多数据以及在" OnLoad"触发了。
{{1}}
如果我取消注释最后3行,一切正常。 我读到它似乎已经知道谷歌图表和循环的麻烦,但无法找到确切的情况。有什么想法吗?
答案 0 :(得分:0)
setOnLoadCallback
只应在每页
目的是让您知道google
已完成加载,以及dom
它需要引用到函数
google.charts.setOnLoadCallback(drawChart);
不是函数的结果
google.charts.setOnLoadCallback(drawChart());
但是,建议不要使用 setOnLoadCallback
将callback
放入load
而不是
首先加载谷歌,然后再不用担心了......
google.charts.load('current', {
callback: drawChart,
packages: ['corechart']
});
答案 1 :(得分:0)
我终于发现了。据我所知,
google.charts.setOnLoadCallback
应该只调用一次,所以我改了
for (var value in allData) {
google.charts.setOnLoadCallback(function() { (allData[value]['function'])(allData[value]) });
};
通过
google.charts.setOnLoadCallback(function() {
for (var value in allData) {
(allData[value]['function'])(allData[value]);
};
});
现在好了;)
答案 2 :(得分:-1)
我认为你必须只调用一次setOnLoadCallBack
google.charts.setOnLoadCallback(myCallBackFunction());
myCallBackFunction = function(){
for (var value in values) {
var data = //use value or what you want
var options = //use value or what you want
var chart = new google.visualization. //etc etc
chart.draw(data,options)
}
}