Highcharts响应在第一次渲染时被忽略

时间:2018-11-26 17:15:59

标签: javascript highcharts

我的图例代码如下,并且有一个响应规则,用于删除移动图例。

我现在看到的问题是,图例最初总是会随图表一起加载。响应规则似乎仅在以后才适用(即,如果我重新加载页面,则图例在那里,如果单击另一个页面的链接,然后返回,则图例消失了。)

是否有一种方法可以强制对负载进行响应检查?

legend: {
    enabled: true,
    verticalAlign: 'top',
    align: 'right',
    floating: true,
    margin: 0,
    padding: 0,
    x: showConviction ? -50 : -46,
    y: 10
},
responsive: {
    rules: [
        {
            condition: {
                maxWidth: 400
            },
            chartOptions: {
                legend: {
                    enabled: false
                }
            }
        }
    ]
},

1 个答案:

答案 0 :(得分:0)

您可以在load event出现时检查chartWidth,然后禁用图例。

HTML:

<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container"></div>

JS:

Highcharts.chart('container', {

  chart: {
    events: {
      load: function() {
        var chart = this,
          legend = chart.legend,
          chartWidth = chart.chartWidth;

        if (chartWidth < 400) {
          legend.update({
            enabled: false
          });
        }
      }
    }
  },

  plotOptions: {
    series: {
      label: {
        connectorAllowed: false
      },
      pointStart: 2010
    }
  },

  series: [{
    name: 'Installation',
    data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
  }, {
    name: 'Manufacturing',
    data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434]
  }],

  responsive: {
    rules: [{
      condition: {
        maxWidth: 400
      },
      chartOptions: {
        legend: {
          enabled: false
        }
      }
    }]
  }

});

演示: https://jsfiddle.net/BlackLabel/t1dswx4j/