簡體   English   中英

異步加載時,AmCharts.ready尚未就緒

[英]AmCharts.ready is not ready when loaded asynchronously

最初我將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遇到的requireJS中的指示引入RequireJS時,它會以某種方式停止工作。 無論AmChart.ready內部的代碼是什么,都不會執行回調。 (奇怪的是它在調試期間被執行了一次)

經過幾次測試后,我意識到AmChart.ready只將回調推送到onReadyArray ,后來在window.load / onload事件之后彈出執行。 換句話說,如果在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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM