2013-03-07 77 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