2013-12-09 101 views
0

本廠宗旨:我們正在通過重新定位避免重疊dataLabels功能工作。這樣做時,show event更新dataLabel位置時會遇到問題。爲了說明我們的問題,我們提供了一個簡化示例,其中包含一個函數,用於將每個可見序列的第一個dataLabel重新定位到頂部(y方向)30px。重新定位功能由演出事件觸發。Highcharts位置dataLabels

... function adjustLables(chart, visibleIndex) { 
console.log('dataLabels'); 
for (var i = 0; i < visibleIndex.length; i++) { 

    var index = visibleIndex[i], 
     dataLabel = chart.series[index].points[0].dataLabel, 
     adjY = dataLabel.y - 30; 

    chart.series[index].points[0].dataLabel.attr({ 
     y: adjY 
    }); 
    console.log(chart.series[index].name, 'dataLabel.y:', dataLabel.y, ', adjY:', adjY, dataLabel); 

}; 
console.log('\n'); 
}; ... 

我們的問題: 雖然我們的功能調整應用.attr的dataLabel.y屬性({Y:adjY})時,dataLabel對象並不在我們預期的方式運行。

例如:(see fiddle和以下描述)

  1. 重新定位只能一次是通過點擊圖例項目首次示出的系列。如果再次激活並激活同一系列,我們的調整將不再起作用。 (如激活系列2在我們的小提琴,你會看到它的第一dataLabel移動30PX頂部。但是,停用/重新激活系列2和dataLabel不再移動30PX頂端,但出現在其標準位置。)

  2. 爲調試這種神祕的停用/激活行爲,我們在調用.attr()之後將一些信息記錄到控制檯:seriesName,dataLabel.y,adjY,dataLabel-object。令人驚訝的是,儘管dataLabel.y和adjY值相同,但dataLabel對象本身在其y屬性中不受影響。

總的來說,我們想知道show event是否是更新dataLabel位置的正確方法。任何經驗或建議都非常受歡迎。

回答