amCharts:div容器的动态长度

时间:2017-01-17 09:25:59

标签: amcharts

我发现了这个: https://www.amcharts.com/kbase/dynamic-chart-container-size-based-on-number-of-data-points/

AmCharts.addInitHandler( function ( chart ) {
  // set base values
  var categoryWidth = 25;

  // calculate bottom margin based on number of data points
  var chartHeight = categoryWidth * chart.dataProvider.length;

  // set the value
  chart.div.style.height = chartHeight + 'px';

}, ['serial'] );

在我的情况下,我通过

加载数据
"dataLoader": {
                "url": "/pages/trainingsProProjectChartData",
                "format": "json"
            },

我该如何计算

  

chartHeight

那个案子呢?如何从dataLoader访问数据量?

更新:

  

的console.log(chart.dataProvider.length);

我得到'chart.dataProvider未定义'

  

的console.log(图表);

我可以看到对象'dataProvider'!!它包含我的所有数据。但我无法访问它?!

1 个答案:

答案 0 :(得分:2)

您正在使用的代码在dataLoader运行之前触发,这就是dataProvider为空的原因。

解决此问题的一种简单方法是将代码放在dataLoader的complete回调中。这将确保它在加载数据后运行:

  "dataLoader": {
    "url": "/path/to/your/endpoint",
    "complete": function(chart) {
      // set base values
      var categoryWidth = 25;

      // calculate bottom margin based on number of data points
      var chartHeight = categoryWidth * chart.dataProvider.length;

      // set the value
      chart.div.style.height = chartHeight + 'px';
    }
  },

Demo