2014-07-08 39 views
2

我試圖在圖表之間設置共享工具提示。只有當提示沒有shared: true它的工作原理很好,如果我設置shared: true我得到錯誤:Highcharts在包含多個系列和共享工具提示的圖表之間共享工具提示

TypeError: 'undefined' is not an object (evaluating 'a[0].category') highcharts.js:3259 

我準備例如:http://jsfiddle.net/CAKQH/24408/

如果移動第一個圖表上的光標 - 它的作品不錯,如果還你的評論shared: true它的工作原理,但如果你移動光標在第二個圖表上,你會得到一個錯誤。

有人遇到過這個錯誤嗎? 請幫我解決它。

+0

@laaposto,對不起,修正。 –

回答

6

發生此問題的原因是,您在一個圖表上有shared: true,而另一個圖表上有默認(false)。這是一個問題,因爲tooltip.refresh方法將採用不同的路徑,並根據共享設置爲true或false的圖表以不同方式使用輸入。

你可以找到這個分支in the source code上線8806,爲tooltip.refresh方法:

// shared tooltip, array is sent over 
if (shared && !(point.series && point.series.noSharedTooltip)) { 
    .... 
} 
// single point tooltip 
else { 
    .... 
} 

你可以做你的syncTooltip方法來處理不同的情況下,像這樣(example JFiddle)內的分支處理這個問題:

function syncTooltip(container, p) { 
    var i = 0; 
    for (; i < charts.length; i++) { 
     if (container.id != charts[i].container.id) { 
      if(charts[i].tooltip.shared) { 
       charts[i].tooltip.refresh([charts[i].series[0].data[p]]); 
      } 
      else { 
       charts[i].tooltip.refresh(charts[i].series[0].data[p]); 
      } 
     } 
    } 
} 

通過這種方式,您可以在兩個圖表上自由設置共享爲true或false。

不幸的是,您的plotOptions.series.point.events.mouseOver -event不會捕獲通過shared: true功能「選擇」的點,因此您將不得不找到備用事件來正確捕獲這種情況。

+0

非常感謝,簡短的回答是我應該在函數刷新參數中使用數組。 –

+0

永遠不會知道爲什麼:) –

+0

是的,謝謝!非常感謝你!我爲面臨同樣問題的人寫了這封信。 –

相關問題