AmCharts.ready не готов при нагруженности асинхронно

StackOverflow https://stackoverflow.com//questions/25012775

  •  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();
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top