amcharts.readyは非同期的にロードされたときに準備ができていません
-
20-12-2019 - |
質問
最初はamcharts.ReadyですべてのAmchart Configを置きます。すべてがうまくいった。
<script src="amcharts/amcharts.js" type="text/javascript"></script>
<script src="amcharts/serial.js" type="text/javascript"></script>
<script>
AmCharts.ready(function() {
console.log("this works");
/* Other configs */
})
</script>
.
どういうわけか refollownoreferrer"> AmChartsにrequirejsを満たす。amchart.Readyのコールバック内のコードは何でも実行されません。(デバッグ中に1回実行されました)
解決
いくつかのテストの後、Amchart.Readyを実現しました。言い換えれば、window.onloadイベントの後にAMCHARTがロードされている場合は、amchart.readyは無駄です。私の回避策は次のとおりです。
<script>
configChart = function() {
/* Create charts stuff */
};
if (AmCharts.isReady) {
configChart();
} else {
AmCharts.ready(configChart);
}
</script>
. 他のヒント
はまだ新しいバージョンでは機能しません(現時点ではバージョン3.14.1)が修正されているのは、handleLoad
メソッドを手動で呼び出すことです。
AmCharts.handleLoad();
.
それを複数回呼び出すと、害を及ぼさないようです。
チャートに非同期的にロードするため、手動で「amcharts.isready= true」を設定する必要がありました。私のamcharts関数を呼び出す前に。例えば:
var chartData1 = [];
function generateChartData() {
...
}
function createStockChart() {
...
}
if ($('.amChartDivExists').length > 0) {
AmCharts.isReady = true;
generateChartData();
createStockChart();
}
. 所属していません StackOverflow