我有一個頁面,其中包含一些從Google電子表格生成的圖表。谷歌圖表API:爲現有回調添加參數
典型的代碼如下所示:
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 docs
額外的信息:
發送(回調)
將查詢發送到數據源。 回調應該是一個在數據源響應時將被調用的函數。回調函數將接收一個類型爲google.visualization.QueryResponse的參數。 返回值:無
問題:
1)沒有什麼是寫在API文檔有關query.send(回調)基本上意味着我不能改變的回調採取額外的參數?
2)任何人都可以提出解決此問題的另一種方法?