我需要在Highcharts中动态添加onload或redraw事件函数,我知道这是在配置步骤中实现的,例如:
$('#container').highcharts({
chart: {
events: {
load: function(event) {
function1();
function2();
function3();
},
redraw: function(event) {
functionA();
functionB();
functionC();
}
}
},
xAxis: {
},
series: [{
data: [29.9, 71.5]
}]
});但我需要在配置图表之后执行此操作(因为我不能访问配置图表步骤,图表通过包装器进入我的代码),并且我需要这样做:
//The wrapper simulation
^
|
|
/////////////////////////////////////////
//$('#container').highcharts({ //
// chart: { //
// events: { //
// load: function(event) { //
// function1(); //
// }, //
// redraw: function(event) { //
// functionA(); //
// } //< "I dont't have access to this code"
// } //
// }, //
// xAxis: { //
// }, //
// series: [{ //
// data: [29.9, 71.5] //
// }] //
//}); //
/////////////////////////////////////////
//I only have the container id in my hands, I can get the highchart object:
$('#container').highcharts();
//And I need to do something like this:
appendOnLoadEvent(function2);
appendOnLoadEvent(function3);
appendOnRedrawEvent(functionB);
appendOnRedrawEvent(functionC);这个是可能的吗?
发布于 2018-10-02 02:06:22
对于Highchart 4.2,您必须使用addEvent方法将事件添加到图表对象。遵循以下代码,首先检索highchart对象,然后向其添加重绘/加载事件
var chart1= Highcharts.charts[0];
Highcharts.addEvent(chart1,'redraw', function(){alert('hi');});发布于 2014-03-12 21:03:48
您需要添加回调(如事件加载),其中您还可以添加重绘事件。在创建图表之前,您需要这样做。
请参阅:http://jsfiddle.net/5S6hF/5/
var redrawCallbacks = [];
function appendOnRedrawEvent(callback) {
redrawCallbacks.push(callback);
}
var loadCallbacks = [];
function appendOnLoadEvent(callback) {
loadCallbacks.push(callback);
}
appendOnLoadEvent(function () {
alert('onload added dynamically');
});
H = Highcharts;
H.Chart.prototype.callbacks.push(function (chart) {
for (var i = 0; i < loadCallbacks.length; ++i) loadCallbacks[i].call(this, event);
H.addEvent(chart, 'redraw', function (e) {
for (var i = 0; i < redrawCallbacks.length; ++i) redrawCallbacks[i].call(this, event);
});
});
//create chart
$('#container').highcharts({
series: [{
data: [29.9, 71.5]
}]
});
appendOnRedrawEvent(function () {
alert('redraw added later');
});https://stackoverflow.com/questions/22336432
复制相似问题