2013-05-02 59 views
4

我想在下面的xAxis事件處理程序中設置Extxt,並獲取Uncaught TypeError。 如何在xAxis事件處理程序中設置特殊字符?如何在xAxis事件處理程序中設置極客?

xAxis: { 
    events: { 
     setExtremes: function (e) { 
      if (e.trigger === "navigator") { 
        forceRebuildSeries(); //Get all data points 

        // Set Extremes (redisplay with new data points) 
        this.chart.xAxis[0].setExtremes(e.min, e.max); //Uncaught TypeError: Property 'setExtremes' of object #<Object> is not a function 
      } 
     } 
    } 
}, 

我希望有任何幫助或解決方法可用。 謝謝。

+0

但你想什麼來實現呢?設置範圍/設置極值後應該做什麼? – 2013-05-06 13:52:32

+0

如果從導航欄中選擇的持續時間大於28天,則該想法是將圖表重新顯示爲折線圖。這將顯示更加精確的工具提示,並防止HighCharts在重繪圖表時平均值。 .setExtremes(e.min,e.max)將保持用戶從導航欄中選擇的值。 – Nikos 2013-05-07 00:07:41

+0

你不需要維護任何東西。用戶選擇一個範圍,然後回調被觸發。回調不需要再次設置它們。 – olleicua 2013-09-13 17:08:55

回答

0

它看起來像highcharts實際上是在回調期間將xAxis對象的所有屬性設置爲null。你不應該需要這樣做,儘管你可能只是註釋掉提供錯誤的那一行並且沒有問題

5

我知道這有點晚了,只是想給未來的訪問者添加我的答案。

Highchart不允許從setExtremes事件處理程序中調用setExtremes以避免無限循環。這就是你得到錯誤的原因。

你可以,但是,插入一個暫停時以解決此保護:

xAxis: { 
    events: { 
     setExtremes: function (e) { 
      if (e.trigger === "navigator") { 
       var c = this; 
       setTimeout(function() { 
        forceRebuildSeries(); //Get all data points 

        // Set Extremes (redisplay with new data points) 
        c.chart.xAxis[0].setExtremes(e.min, e.max); 

       }, 1); 
      } 
     } 
    } 
} 
+0

感謝您解決這個問題。在事件期間檢查軸時,我看到axis.setExtremes根本就是空的,但是這真令人氣憤,因爲沒有解釋爲什麼。我現在明白,這是爲了保護我們免於自己,但在我的情況下,這是一件麻煩 - 這應該留給開發者(或者有一個可以設置的'safeZoom'標誌,以禁用默認行爲) 。 – MandM 2015-03-19 14:29:52

+0

+1指出了Highcharts的「保護」行爲,看到這種意外的行爲真的令人沮喪,不知道爲什麼 – mikhail 2015-12-28 19:14:53

相關問題