2017-01-17 4 views
0

Я нашел это: https://www.amcharts.com/kbase/dynamic-chart-container-size-based-on-number-of-data-points/amCharts: динамическая длина сОн контейнера

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

Код, который вы используете, перед запуском dataLoader, поэтому dataProvider пуст.

Простой способ обойти это - просто поместить код в обратный вызов complete dataLoader. Это будет гарантировать, что запускается после загрузки данных:

"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

+0

Спасибо так много !!! – user1555112