按照此stackoverflow question中的答案,我尝试运行以下代码。但myfunction只需要一个谷歌可视化事件。那以下代码是否有效?或者如何在单个函数中处理多个statechange google可视化事件?
var categoryPicker1, categoryPicker2;
function drawVisualization() {
// etc.
categoryPicker1 = // etc...
categoryPicker2 = // etc...
// Register to hear state changes.
google.visualization.events.addListener(categoryPicker1, 'statechange', myfunction);
google.visualization.events.addListener(categoryPicker2, 'statechange', myfunction);
// etc.
}
function myfunction() {
var whereClauses = [];
if (categorypicker1) {
whereClauses.push("something1 = '" + document.getElementsByClassName('goog-inline-block goog-menu-button-caption')[0].innerHTML + "'")
}
if (categorypicker2) {
whereClauses.push("something2 = '" + document.getElementsByClassName('goog-inline-block goog-menu-button-caption')[1].innerHTML + "'")
}
whereClause = whereClauses.join(" AND ");
// do something....
}
答案 0 :(得分:0)
您的问题并不是很清楚,但我假设您正在从CategoryPicker中的所选项目构建SQL数据库查询。尽管是一个非常糟糕/危险的事情(构建SQL客户端并将其发送到服务器),但这应该可以通过从CategoryPicker中获取selectedItem并使用“AND”加入它们来实现。像:
values = categoryPicker1.getState().selectedValues;
values = values.concat(categoryPicker2.getState().selectedValues);
var args = values.map(function(_) { return "'" + _ + "'"; });
console.log(args.join(" AND "));
如果我是你,我不会这样做。我会将参数传递给服务器,并在那里重新映射它们(在适当地过滤它们之后等)。这又是非常危险。