我正在尝试将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似乎不起作用。我使用与散射相同的逻辑并且它可以工作。
感谢
答案 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变量中我拥有我需要的所有东西。