google-visualization - 谷歌图表 : How do I add select event handler to the pie chart?

标签 google-visualization

我能够成功生成饼图。但是,当我尝试向饼图添加选择事件监听器时,它根本没有触发该函数。

function handlePieChartResponse(response)
    {
        if (response.isError()) {
            alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
            return;
        }
        var dataTable = response.getDataTable();
        if (dataTable.getNumberOfRows() <= 0) {
            document.getElementById('dummyTableRow').innerHTML = '<span>No data found</span>';
            return;
        }

        var chartOptions = DEFAULT_PIE_CHART_OPTIONS;
        //var chartOverallPmmLevelCalculated = new google.visualization.ChartWrapper({
           // 'chartType': 'PieChart',
           // 'containerId': 'chartOverallPmmLevelCalculatedHtml',
            // options: chartOptions
        //});

        var chartRecentPmmLevelCalculated = new google.visualization.PieChart(document.getElementById('chartOverallPmmLevelCalculatedHtml'));
        chartRecentPmmLevelCalculated.draw(dataTable, chartOptions);

        google.visualization.events.addListener(chartRecentPmmLevelCalculated, 'ready', function () { drawPieChart(); });
        google.visualization.events.addListener(chartRecentPmmLevelCalculated, 'select', function () { selectHandler(); });

        function drawPieChart() {
            var responseDataTable = response.getDataTable();
            var chartDataTable = new google.visualization.DataTable();
            chartDataTable.addColumn('string', 'LEVEL');
            chartDataTable.addColumn('number', 'SCORE');
            var chartDataTableRow = new Array();
            var rowCounter;
            var levelValue;
            for (rowCounter = 0; rowCounter < responseDataTable.getNumberOfRows() ; rowCounter++) {
                var seek = 0 * 1;
                levelValue = responseDataTable.getValue(rowCounter, 0);
                chartDataTableRow[seek++] = "LEVEL " + levelValue;
                chartDataTableRow[seek++] = responseDataTable.getValue(rowCounter, 1);
                chartDataTable.addRow(chartDataTableRow);
            }
            chartDataTable.sort([{ column: 1 }]);
            chartOverallPmmLevelCalculated.setDataTable(chartDataTable);
            chartOverallPmmLevelCalculated.draw();
        }
        handlePieChartResponse.drawPieChart = drawPieChart;
    }

    function selectHandler() {
        alert("This alert triggered from pie chart");
        var selectedItem = chartRecentPmmLevelCalculated.getSelection();
        if (selectedItem) {
            var levelSelected = chartOverallPmmLevelCalculated.getValue(selectedItem.row, 0);
            alert(levelSelected);
        }
    }

我附上了 2 张图像,其中包括单击之前和之后的图像。一旦在饼图切片上选择,我就期待收到警报消息。但不存在任何警报,并且未触发函数调用。

Before Click After Click on the slice

最佳答案

问题与范围有关

selectHandler 位于函数 handlePieChartResponse

之外

所以找不到

只需将其移入handlePieChartResponse

然后设置事件,就像这样......

...addListener(chartRecentPmmLevelCalculated, 'select', selectHandler);

关于google-visualization - 谷歌图表 : How do I add select event handler to the pie chart?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39262561/

相关文章:

charts - 我希望谷歌饼图显示 pieSliceText 为整数

javascript - Firefox 中的 Google 折线图 hAxis 格式有问题

javascript - Google 可视化折线图,对数显示,数据中值为 0

python - 使用数据存储数据呈现谷歌图表

javascript - 以另一种数字语言显示折线图垂直轴

charts - 如何在谷歌折线图的边缘附加图像或图标

javascript - Google Chart - JSON 数据源项目作为图例字段 - 堆积列

javascript - ChartWrapper 不显示图表

google-visualization - 在 Rails 4 应用程序中将 Chartkick 图转换为图像服务器端

javascript - 在 Google Charts 中组织图表选项