从addSeries事件中调用addSeries()

时间:2013-12-30 16:41:06

标签: highcharts

我想在图表中添加参考系列(即参考价格)。 Axis.addPlotLine()这样做,但我希望能够从传奇中切换这个系列;普通的plotLine不会出现在图表的图例中。

plotLine看起来不是一个好解决方案的另一个原因是视口计算无法解决这个问题。这意味着切换其他系列可能会导致plotLine由于缩放而出现在视口外。

实现我想要的最简单方法是通过chart.addSeries添加动态系列。但是在触发的 addSeries事件中调用此方法是不可能的,因为在事件处理程序中chart.addSeries设置为null

绑定重绘事件也会产生很多困难,因为render()不能再被调用了。

你会怎么做?

更新

根据Pawel Fus的评论,我未能成功尝试以下内容:

[…]
events: {
    load: function (event) {
      foo = this;
    },
    addSeries: function(event) {
      console.log(foo) // returns chart object as expected
      console.log(foo.addSeries) // undefined
    }
}

2 个答案:

答案 0 :(得分:2)

解决方案是在加载事件上存储addSeries,并在添加系列时使用存储的函数。实例:http://jsfiddle.net/3bQne/808/

        events: {
            load: function (event) {
                foo = this.addSeries;
            },
            addSeries: function (event) {
                if (iterator) {
                    iterator--;
                    foo.call(this, {
                        data: [100, 200, 100, 100, 200, 300]
                    });
                }

            }
        },

答案 1 :(得分:0)

你仍然可以坚持使用plotLine。 如果线的位置是静态的,那么这是最好的方法。

如果位置是动态的,那么你仍然可以使用plotLine。 有动态添加和删除plotLine的事件。

API链接 removePLotLine():http://api.highcharts.com/highcharts#Axis.removePlotLine addPlotLine():http://api.highcharts.com/highcharts#Axis.addPlotLine

我希望这会对你有所帮助。