AmCharts.ready не готов при нагруженности асинхронно
-
20-12-2019 - |
Вопрос
Первоначально я положил все конфиги Amchart в AmCharts.Ready. Все работало нормально.
<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>
.
Каким-то образом он перестает работать, когда я представляю потребности в соответствии с инструкциями в amcharts соответствует требованиям airejs .Какой бы код в обратном вызове AmChart.ready не будет выполнен.(Странно он был выполнен один раз во время отладки)
Решение
После нескольких тестов я понял AmChart.ready.Другими словами, если 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.iready= true;"Прежде чем звонить в мои функции AmCharts.Например:
var chartData1 = [];
function generateChartData() {
...
}
function createStockChart() {
...
}
if ($('.amChartDivExists').length > 0) {
AmCharts.isReady = true;
generateChartData();
createStockChart();
}
.