2013-03-07 106 views
0

有沒有方法在高圖中刪除默認狀態機制?Highchart手動管理狀態

它似乎像自動改變懸停狀態重置我的手動設置狀態。

我想要實現的是當用戶點擊它時選擇系列。

我已經添加選中狀態,這樣的:

plotOptions: { 
     series: { 
       states: { 
        select: { 

          lineWidth: 2 
        } 
       }, 

,我用手動設置此狀態:

this.setState(this.state === 'select' ? '' : 'select'); 

線寬變化工作,但是,當我移動鼠標在它周圍重新設置lineWidth(我猜是因爲有些懸停事件被解僱了,但我不確定)

我已經嘗試禁用懸停狀態,但沒有任何成功:

states: { 
    hover: { 
     enabled: false 
    }, 
    select: { 
      lineWidth: 3 

確切的問題可以看到在這個jsfiddle當您點擊系列線路,它的選擇,則走動將取消選擇...我不能uderstand原因。

回答

1

如果您始終手動設置狀態,則可以在實例化任何圖形之前,通過將下面的代碼片段添加到代碼中來關閉「正常」/重置狀態。如果沒有傳遞任何參數(又名Highcharts源代碼試圖將系列恢復正常),它所做的就是取消setState操作。

Highcharts.Series.prototype.setState = (function (func) { 
     return function() { 
      if (arguments.length>0){ 
       func.apply(this, arguments); 
      } 
     }; 
    } (Highcharts.Series.prototype.setState)); 

讓我知道如果這就是你要找的東西!這裏是修改的JSFiddle:http://jsfiddle.net/G9d9H/8/

編輯:只是一點點,但進一步的解釋,什麼Highcharts源代碼實際上是做的是,如果你mouseOver系列,它會自動恢復所有其他系列默認樣式。因爲這很可能是狀態功能的頭號用例,所以我假設這就是他們爲什麼要這樣編碼的原因。

+0

就是這樣!非常感謝 ! – Guian 2013-03-07 14:54:43

+0

@Guian不客氣,沒問題。 =) – MatthewKremer 2013-03-07 15:13:19