我有一个页面,其中包含从 Google 电子表格生成的许多图表。
典型代码如下所示:
var url = "http://my.googlespreadsheet.com/tq?argumentshereblahblahblah";
// create and send off the query
var query = new google.visualization.Query( url );
query.send( handleQueryResponse );
function handleQueryResponse(response) {
// omitted code to handle errors
// create new chart object, specify location in page
var chart = new google.visualization.BarChart( document.getElementById('chart-' + i));
// draw chart
chart.draw( data, {} );
}
由于我在页面上有几个图表,我想以编程方式创建它们,而不必拥有看起来相同的x函数,只是图表位置和标题不同。我已经设置了一个电子表格引用数组,我遍历这些引用,将每个引用传递给运行上述代码的函数:创建查询、发送查询、处理响应。我想要做的是将一个额外的参数传递给 handleQueryResponse 回调,以便我可以指定图形应该在页面上的位置。不过,我无法找到将变量放入 handleQueryResponse 的方法。如果我这样做:
// array of spreadsheet refs
var quArr = ['gid=2&range=D2%3AE10&headers=-1','gid=2&range=D15%3AE19&headers=-1', (etc.) ];
var base_url = "http://my.googlespreadsheet.com/tq?";
var i; // iterator
// iterate through the spreadsheet refs and send off the queries for each
for (i = 0; i < quArr.length; i++){
var url = q_base + quArr[i];
var query = new google.visualization.Query( url );
query.send( handleQueryResponse );
}
// deal with the responses
function handleQueryResponse(response) {
// omitted code to handle errors
// get the data from the response
var data = response.getDataTable();
// create new chart object, specify location in page
// anchors in the page correspond to where the chart should go
var chart = new google.visualization.BarChart( document.getElementById('chart-' + i));
chart.draw( data, { extra args } );
}
...返回响应的异步性质意味着迭代器与我发送请求时的值不同。
来自API 文档的额外信息:
发送(回调)
将查询发送到数据源。callback应该是数据源响应时调用的函数。回调函数将接收 google.visualization.QueryResponse 类型的单个参数。返回值:无
问题:
1) API 文档中关于 query.send(callback) 的内容是否本质上意味着我无法更改回调以获取额外的参数?
2)任何人都可以提出解决这个问题的另一种方法吗?