0

有没有办法在 highchart 中删除默认状态机制?

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

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

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

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

                            lineWidth: 2
                     }
               },

我正在手动设置此状态:

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

lineWidth 更改是有效的,但是当我在它周围移动鼠标时会重置 lineWidth (我猜是因为触发了一些悬停事件,但我不确定。)

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

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

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

4

1 回答 1

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

于 2013-03-07T14:33:20.423 回答