2

lazy_highchartsgemを使用してhighchartを作成しています。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');
    }};

そこにも運がない。

どんな洞察もありがたいです、ありがとう。

4

3 に答える 3

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
于 2013-03-29T03:18:16.723 に答える
0

私はその宝石に精通していませんが、標準のハイチャート 3.0 では、その方法でイベントを追加できます。

chart.yAxis[0].update({
    events: {
        afterSetExtremes: function(){
            alert('x');
        }
    }
});
于 2013-03-22T11:49:20.907 に答える