首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Highcharts中动态追加onload或redraw事件函数

在Highcharts中动态追加onload或redraw事件函数
EN

Stack Overflow用户
提问于 2014-03-12 04:55:16
回答 2查看 10.4K关注 0票数 6

我需要在Highcharts中动态添加onload或redraw事件函数,我知道这是在配置步骤中实现的,例如:

代码语言:javascript
复制
$('#container').highcharts({
   chart: {
       events: {
          load: function(event) {
              function1();
              function2();
              function3();
          },
          redraw: function(event) {
              functionA();
              functionB();
              functionC();
          }
       }        
    },
    xAxis: {
    },
    series: [{
        data: [29.9, 71.5]     
    }]
});

但我需要在配置图表之后执行此操作(因为我不能访问配置图表步骤,图表通过包装器进入我的代码),并且我需要这样做:

代码语言:javascript
复制
//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);

这个是可能的吗?

EN

回答 2

Stack Overflow用户

发布于 2018-10-02 02:06:22

对于Highchart 4.2,您必须使用addEvent方法将事件添加到图表对象。遵循以下代码,首先检索highchart对象,然后向其添加重绘/加载事件

代码语言:javascript
复制
var chart1= Highcharts.charts[0];
Highcharts.addEvent(chart1,'redraw', function(){alert('hi');});
票数 1
EN

Stack Overflow用户

发布于 2014-03-12 21:03:48

您需要添加回调(如事件加载),其中您还可以添加重绘事件。在创建图表之前,您需要这样做。

请参阅:http://jsfiddle.net/5S6hF/5/

代码语言:javascript
复制
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');
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22336432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档