从highstock的数据结构中获取变量

时间:2018-05-03 10:57:17

标签: javascript highcharts highstock

我正在尝试将ID传递给数据结构,以便在点击事件中我可以使用它在浏览器中打开新选项卡。我错误地认为我可以使用this.id就像我可以使用this.color或this.name。 我的结构数据是这样的:

var _DATA_XY0 =[{"id":24356,"name":"Title name","data":[[1322175600000,0.0],[1322780400000,8.301021537820063],[1323385200000,6.064466537188018],[1323990000000,2.580595528139673],[1324594800000,4.171990586412377],[1325199600000,3.0967211543766027],.......

我有这个代码来绘制XY图表:

Highcharts.stockChart(div, {
    exporting: {
        enabled: false,
        allowHTML: true
    },
    rangeSelector: {
        enabled: false
    },
    navigator: {
        enabled: false
    },
    scrollbar: {
        enabled: false
    },

    yAxis: {
        opposite: false,
        labels: {
            formatter: function () {
                return (this.value > 0 ? ' + ' : '') + this.value + '%';
            }
        },
        plotLines: [{
            value: 0,
            width: 2,
            color: 'silver'
        }]
    },

    plotOptions: {

        series: {
            showInNavigator: true,
            point: {
                events: {
                    click: function (e) {
                        var win = window.open('https://localhost/' + this.id, '_blank');
                        if (win) {
                            win.focus();
                        }
                    }
                }
            }
        }

    },

    tooltip: {
        pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b>',
        valueDecimals: 2,
        split: false
    },

    series: data
});

在点击事件中,我使用了这个:

var win = window.open('https://localhost/' + this.id, '_blank');

但是这个.id似乎不起作用。我使用与散射相同的逻辑并且它可以工作。

感谢

1 个答案:

答案 0 :(得分:0)

我在事件中采取不同的方法因为我需要比id更多的元数据。也许我的方法可以为您提供所需的结果。

我创建了以下对象:

var graphEvents = {
  type: 'flags' , 
  data: new Array() , 
  onSeries: 'DataSet',
  events: {
    click : function(e){
      if(e.point.evt) {
        var myEvt = e.point.evt;
      }
    }
  }
};

然后按以下方式进入Event Object的Data数组:

graphEvents.data.push({
    x: Date.parse(myDate),
    title: "EventTitle" , 
    evt : {
      custom_key_a : value["a"] , 
      custom_key_b : value["b"] , 
      custom_key_c : value["c"] , 
      custom_key_d : value["d"] 
    }
});

注意“evt”键。这是我添加到Object的自定义键,因此当用户点击它以及所有自定义键时都可以使用它:我在其中的值。这样,当用户点击事件时,我可以从第一个对象中看到的代码中获取所有Objects Meta:

events: {
  click : function(e){
    if(e.point.evt) {
      var myEvt = e.point.evt;
    }
  }
}

现在在myEvt变量中我拥有我需要的所有东西。