异步加载时,AmCharts.ready尚未就绪

And*_*ndy 4 javascript amcharts requirejs

最初我将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>
Run Code Online (Sandbox Code Playgroud)

当我按照amCharts遇到的requireJS中的指示引入RequireJS时,它会以某种方式停止工作.无论AmChart.ready内部的代码是什么,都不会执行回调.(奇怪的是它在调试期间被执行了一次)

And*_*ndy 14

经过几次测试后,我意识到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>
Run Code Online (Sandbox Code Playgroud)


ske*_*rit 5

仍然不能在较新的版本(此时版本3.14.1)中工作,但是修复它的handleLoad方法是手动调用该方法:

AmCharts.handleLoad();
Run Code Online (Sandbox Code Playgroud)

多次调用它似乎也没有任何伤害.