Highchart手动管理状态
问题描述:
有没有方法在高图中删除默认状态机制?Highchart手动管理状态
它似乎像自动改变悬停状态重置我的手动设置状态。
我想要实现的是当用户点击它时选择系列。
我已经添加选中状态,这样的:
plotOptions: {
series: {
states: {
select: {
lineWidth: 2
}
},
,我用手动设置此状态:
this.setState(this.state === 'select' ? '' : 'select');
线宽变化工作,但是,当我移动鼠标在它周围重新设置lineWidth(我猜是因为有些悬停事件被解雇了,但我不确定)
我已经尝试禁用悬停状态,但没有任何成功:
states: {
hover: {
enabled: false
},
select: {
lineWidth: 3
确切的问题可以看到在这个jsfiddle当您点击系列线路,它的选择,则走动将取消选择...我不能uderstand原因。
答
如果您始终手动设置状态,则可以在实例化任何图形之前,通过将下面的代码片段添加到代码中来关闭“正常”/重置状态。如果没有传递任何参数(又名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
系列,它会自动恢复所有其他系列默认样式。因为这很可能是状态功能的头号用例,所以我假设这就是他们为什么要这样编码的原因。
就是这样!非常感谢 ! – Guian 2013-03-07 14:54:43
@Guian不客气,没问题。 =) – MatthewKremer 2013-03-07 15:13:19