2017-01-17 5 views
0

の動的な長さ、私はこれが見つかりました:私の場合は https://www.amcharts.com/kbase/dynamic-chart-container-size-based-on-number-of-data-points/amCharts:のdivコンテナ

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']); 

を、私はどのように私は

chartHeightを計算することができます

"dataLoader": { 
       "url": "/pages/trainingsProProjectChartData", 
       "format": "json" 
      }, 

を介してデータをロードします

その場合、

? dataLoaderからデータの数にアクセスするにはどうすればよいですか?

UPDATE:

にconsole.log(chart.dataProvider.length)。私は

にconsole.log(チャート) 'chart.dataProviderが定義されていない' 取得

私はオブジェクト 'dataProvider'を見ることができます!私のすべてのデータが含まれています。しかし、私はそれにアクセスすることはできませんか?

答えて

1

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

+0

感謝を! – user1555112