javascript - HighCharts 多点选择 - 在点选择后立即访问/更新 getSelectedPoints 数组

标签 javascript highcharts

我有一个 HighCharts 线图,允许选择多个点。每次选择/取消选择后,我想根据所有当前选定的点执行操作。

我正在触发plotoptions.line.point.events.select(或.click)事件,该事件返回最新选择的点。但是,chart.getSelectedPoints() 返回的数组显然直到 .select 或 .click 事件完成后才会更新。因此,我无法在事件内部使用 Chart.getSelectedPoints() 。

以下是此示例的摘录,演示了该问题 - http://jsfiddle.net/joelion/QJ75h/

   plotOptions: {
        series: {
            allowPointSelect: true,
            point: {
                events: {
                    select: function() {
                        var chart = $('#container').highcharts();

                        var selectedPointsStr = "";

                        // when is the chart object updated? after this function finshes?
                        var selectedPoints = chart.getSelectedPoints();
                        $.each(selectedPoints, function(i, value) {
                            selectedPointsStr += "<br>"+value.category;
                        });

                        $report.html(selectedPointsStr);                            
                    }
                }
            }
        }

有没有办法在点选择后立即强制图表 getSelectedPoints() 数组?或者也许是在数组更新后触发的另一个事件?

最佳答案

您可以使用选定的点创建数组,然后只需推送/覆盖内部的点。演示:http://jsfiddle.net/QJ75h/2/

var $report = $('#report'),
    selectedPoints = [];

// create the chart
$('#container').highcharts({
    chart: {},
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },

    plotOptions: {
        series: {
            allowPointSelect: true,
            point: {
                events: {
                    select: function (event) {
                        var chart = this.series.chart;

                        var selectedPointsStr = "";
                        if (event.accumulate) {
                            selectedPoints.push(this);
                        } else {
                            selectedPoints = [this];
                        }
                        $.each(selectedPoints, function (i, value) {
                            selectedPointsStr += "<br>" + value.category;
                        });
                        $report.html(selectedPointsStr);
                    }
                }
            }
        }
    },

    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    }]
});

关于javascript - HighCharts 多点选择 - 在点选择后立即访问/更新 getSelectedPoints 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21249385/

相关文章:

javascript - 从表 angularjs 获取 highcharts 数据

javascript - 无法读取未定义的 highcharts highstock 的属性 'type'

Highcharts:当 styledMode 打开时,设置线条系列上的描边宽度没有效果

javascript - 为什么图表中的数据显示不正确?

javascript - 如何旋转 HighCharts 条形图使其垂直而不是水平?

javascript - Safari 中对 createMediaElementSource() 的支持有多好?

javascript - React - forEach() 的结果未定义

javascript - 仪表图 Highchart 表盘样式问题

javascript - 自动填写 react 不起作用

javascript - Google Maps API 不显示地点