Highchart手动管理状态

时间:2013-03-07 11:02:26

标签: highcharts

高清中是否有办法删除默认的状态机制?

似乎自动更改悬停状态正在重置我的手动设置状态。

我想要实现的是在用户点击它时选择该系列。

我添加了这样的选择状态:

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

                            lineWidth: 2
                     }
               },

我手动设置此状态:

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

lineWidth更改正在工作但是,当我移动鼠标时,它会重新调整lineWidth(我猜它是因为某些悬停事件被触发但我不确定。)

我已经尝试禁用悬停状态,但没有成功:

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

当您点击系列线时,可以在此jsfiddle上看到确切的问题,选中它然后四处移动取消选择...我无法理解为什么。

1 个答案:

答案 0 :(得分:1)

如果您一直手动设置状态,则可以在实例化任何图形之前通过将以下代码段添加到代码中来关闭“正常”/重置状态。它只是取消了setState操作,如果没有传递参数(也就是Highcharts源代码试图将系列恢复为正常)。

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系列,它会自动将所有其他系列恢复为默认样式。由于这很可能是状态功能的第一用例,我假设这就是为什么他们用这种方式编码。