Javascript Google Visualization getSelection()不符合预期

Javascript Google Visualization getSelection()不符合预期,javascript,charts,google-visualization,Javascript,Charts,Google Visualization,一旦用户选择了选择器,我想访问仪表板的状态 我尝试过使用dashboard.getSelection(),但在选择选择器后,它不会返回任何结果。文档似乎描述了我想要实现的目标 返回中图表的选定可视实体的数组 仪表板在仪表板上调用getSelection()方法时, 返回对所有对象所做的所有选择的集合 其中的图表,允许在 使用图表选择 我错过了什么 google.charts.load('current'{ “包”:[“corechart”、“table”、“gauge”、“controls”、

一旦用户选择了选择器,我想访问
仪表板的状态

我尝试过使用
dashboard.getSelection()
,但在选择选择器后,它不会返回任何结果。文档似乎描述了我想要实现的目标

返回中图表的选定可视实体的数组 仪表板在仪表板上调用getSelection()方法时, 返回对所有对象所做的所有选择的集合 其中的图表,允许在 使用图表选择

我错过了什么

google.charts.load('current'{
“包”:[“corechart”、“table”、“gauge”、“controls”、“charteditor”]
});
$(文档).ready(函数(){
//console.log(“准备就绪!”);
renderChart_onPageLoad();
});
函数renderChart_onPageLoad(){
google.charts.setOnLoadCallback(函数(){
//console.log(“renderChart_onPageLoad”);
提款权(A);
});
}
函数drawDashboard_A(后缀){
//控制台日志(“drawDashboard”);
var data=google.visualization.arrayToDataTable([
[‘姓名’、‘RoolNumber’、‘性别’、‘年龄’、‘DonutsEaten’],
[Michael',1',Male',12,5],
[Elisa',2',女性',20,7],
[Robert',3',Male',7,3],
[John',4',Male',54,2],
['Jessica',5,'Female',22,6],
[Aaron',6',Male',3,1],
[Margareth',7',女性',42,8],
[Miranda',8',女性',33,6]
]);
var dashboard=new google.visualization.dashboard(document.getElementById('dashboard_u'+后缀));
var categoryPicker1=新的google.visualization.ControlWrapper({
controlType:“CategoryFilter”,
集装箱ID:'categoryPicker1_uu'+后缀,
选项:{
filterColumnLabel:'性别',
用户界面:{
标签定位:“垂直”,
allowTyping:false,
allowMultiple:false
}
}
});
var categoryPicker2=新的google.visualization.ControlWrapper({
controlType:“CategoryFilter”,
集装箱运输:“categoryPicker2_uuz”+后缀,
选项:{
filterColumnLabel:“RoolNumber”,
用户界面:{
标签定位:“垂直”,
allowTyping:false,
allowMultiple:false
}
}
});
var proxyTable=new google.visualization.ChartWrapper({
chartType:'表',
containerId:'proxyTable_uuz'+后缀,
选项:{
宽度:“500px”
}
});
//此json包含我以后的设置
让json={
“图表”:{
“hasTable”:没错,
“数据视图”:{
“栏目”:[{
“id”:“名称”
},
{
“id”:“RoolNumber”
},
{
“id”:“性别”
},
{
“id”:“年龄”
},
{
“id”:“DonutsEaten”
}
]
},
“组视图”:{
“hasGroupView”:false
},
“totalRow”:{
“hasTotalRow”:没错,
“labelCol”:“总计”,
“labelColIndex”:0,//这是存储单词“总计”的列。它必须是文本列。
“总计列”:[{
“id”:“RoolNumber”,
“类型”:“编号”,
“函数”:“和”
}]
},
“条件格式”:{
“hasConditionalFormat”:false
},
“选项”:{},
“hascv”:错误,
“clickGetFunc”:空
},
};
google.visualization.events.addListener(proxyTable,'ready',function()){
log(后缀+”.addListener(proxyTable,'ready'-picker状态);
//log('state proxy id',proxyTable.getContainerId());
//log('state proxy table',proxyTable);
log('state dashboard selection',dashboard.getSelection());
console.log('state picker1 direct',categorypecker1.getState());//返回单个选择器的结果
console.log('state picker2 direct',categoryPicker2.getState());//返回单个选择器的结果
});
dashboard.bind([categoryPicker1,categoryPicker2],[proxyTable]);
仪表盘.绘图(数据);
}




最后,我使用一个名为
categoryPicker\u default
的函数,使用一个数组来构建类别选择器(我通常会这样做,但为了简单起见不在这里发布)

var categoryPickerArray = [];
for (var i = 0; i < categoryPickerColumns.length; i++) {
    categoryPickerArray.push(
        new google.visualization.ControlWrapper(categoryPicker_default(i)),
    );
};
然后根据
categorypeckerarray
中的选择器数量动态构建事件列表器

statechange
lib\u gcharts\u categoryPickerState
上调用以收集更新

for (let i = 0; i < categoryPickerArray.length; i++) {
    google.visualization.events.addListener(categoryPickerArray[i], 'statechange', function () {            
        lib_gcharts_categoryPickerState(categoryPickerArray[i]);
    });
};

感谢@WhiteHat在上一篇文章中介绍了这种收集值的方法。

仪表板选择方法只返回在图表上所做的选择,而不是控件。仪表板的绑定方法中不包括
table
,只有
proxyTable
。您好,我简化了代码段。仪表板现在有two选择器和一个表。我有点困惑,因为仪表板选择方法只对包含的图表有效,我如何返回控件当前状态的聚合?没有一种方法可以为您执行此操作。您可以将控件存储在数组或对象中,这将允许您对它们进行循环,并收集每个状态…我最终得到了j我们正在这样做。请查看我的回复帖子,让我知道这是否是实现目标的好方法。我仍然感谢您,因为我使用了
categoryPickerState[controlWrapper.getContainerId()]
.hasOwnProperty
您上周刚刚介绍给我。遗憾的是,他们没有提供一种总体上实现这一点的方法。非常感谢您的光临!
for (let i = 0; i < categoryPickerArray.length; i++) {
    google.visualization.events.addListener(categoryPickerArray[i], 'statechange', function () {            
        lib_gcharts_categoryPickerState(categoryPickerArray[i]);
    });
};
var categoryPickerState = {};

function lib_gcharts_categoryPickerState(controlWrapper) {
    if (categoryPickerState.hasOwnProperty(controlWrapper.getContainerId())) {
        delete categoryPickerState[controlWrapper.getContainerId()];
    }
    categoryPickerState[controlWrapper.getContainerId()] = controlWrapper.getState();
}