我发现了这个: 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"
},
我该如何计算
那个案子呢?如何从dataLoader访问数据量?chartHeight
更新:
与
的console.log(chart.dataProvider.length);
我得到'chart.dataProvider未定义'
的console.log(图表);
我可以看到对象'dataProvider'!!它包含我的所有数据。但我无法访问它?!
答案 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';
}
},