Highcharts:无法读取未定义的属性“图表”

时间:2015-10-06 14:36:23

标签: javascript jquery charts highcharts

所以我已经建立了这个图表并且它可以工作,除了它不断抛出错误无法读取未定义的属性“图表”。我正在重新调整窗口大小的图表,以便html标签重新加载到正确的位置。

这是一个双圆圈图表,根据所选切片显示/隐藏内容。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

首先,您在var chart函数中定义createChart变量,因此它始终是未定义的 - 只使用一个定义(顶部的定义),稍后只将图表分配给该变量。无论如何,我看到两个解决方案:

  • setTimeout()事件中使用resize,以延迟呈现图表。这不是一个可靠的解决方案,因为用户可以使用浏览器的宽度,而且可能会再次破坏某些内容

  • 包装initReflow方法以检查图表是否存在,如下所示:

    (function(H, HA) {
      H.wrap(H.Chart.prototype.initReflow = function () {
        var chart = this,
            reflow = function (e) {
                if(chart && chart.options) {
                    chart.reflow(e);
                }
            };
    
    
        HA.addEvent(window, 'resize', reflow);
        HA.addEvent(chart, 'destroy', function () {
            HA.removeEvent(window, 'resize', reflow);
        });
      });
    })(Highcharts, HighchartsAdapter)
    

工作演示:https://jsfiddle.net/dpsn9gx8/7/

修改 由于Highcharts 4.1.10 Highcharts适配器是内置的,因此将其删除并使用Highcharts:https://jsfiddle.net/dpsn9gx8/11/