afterSetExtremes回调highcharts

时间:2013-03-21 17:25:39

标签: highcharts lazy-high-charts

我正在使用lazy_highcharts gem创建一个高清图。我想利用afterSetExtremes回调来重新生成页面上的一些其他数据。我尝试了几种方法,目前正在尝试:

 @chart = LazyHighCharts::HighChart.new('graph') do |f|
                    f.chart(:zoomType =>'x', :defaultSeriesType => 'spline')
                    f.x_axis(:type=> 'datetime', :events => {:afterSetExtremes => "functon(event){alert('something')}"} )
end

但这给了我错误

Uncaught TypeError: Object functon(event){alert('something')} has no method 'apply'
当我缩放图表时,在JavaScript控制台中

。我假设这与生成器没有正确设置回调函数有关,将其设置为字符串而不是将其解释为函数。

我还尝试在创建后通过javascript在我的图表对象上设置它,但到目前为止还没有运气。以下几次尝试

chart_my_id4.xAxis.events = {setExtremes: function(event) {
      alert('set extremes');
    }};
chart_my_id4.xAxis[1].events = {setExtremes: function(event) {
      alert('set extremes');
    }};

也没有运气。

有任何见解,谢谢。

3 个答案:

答案 0 :(得分:3)

不太熟悉... ruby​​,但我看了一下github上的源代码,当他们将函数设置为属性时,他们执行以下操作:

:formatter => "function() { return this.x; }".js_code

值得尝试添加.js_code并查看它是否有效,以便最终得到:

 @chart = LazyHighCharts::HighChart.new('graph') do |f|
   f.chart(:zoomType =>'x', :defaultSeriesType => 'spline')
   f.x_axis(:type=> 'datetime', :events => {
     :afterSetExtremes => "functon(event){alert('something')}".js_code
   })
end

答案 1 :(得分:0)

我不熟悉那个gem,但在标准的Highcharts 3.0中你可以用这种方式添加事件:

chart.yAxis[0].update({
    events: {
        afterSetExtremes: function(){
            alert('x');
        }
    }
});

答案 2 :(得分:0)

你可以这样做:

 LazyHighCharts::HighChart.new('graph') do |f|
   ...
   f.xAxis(:events => { :afterSetExtremes => after_set_extremes_function})
 end

-

 def after_set_extremes_function
   %|function(e) {
     chart = Highcharts.charts[0];
     chart.showLoading('Loading data...');
     $.getJSON("/path_to_your_action?start="+Math.round(e.min)+"&end="+Math.round(e.max), function(data) {
          chart.series[0].setData(data);
          chart.hideLoading();
        }
      }
    );
   }|.js_code
 end