最初,我把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 meets requireJS中的指示引入RequireJS时,它会以某种方式停止工作。无论AmChart.ready内部的代码是什么,都不会执行回调。 (奇怪的是,它在调试期间执行了一次)
答案 0 :(得分: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>
答案 1 :(得分:5)
在较新的版本(目前版本为3.14.1)中仍然无效,但是修复它的方法是手动调用handleLoad
方法:
AmCharts.handleLoad();
多次调用它似乎也不会造成任何伤害。
答案 2 :(得分:1)
因为我异步加载图表,我需要手动设置“AmCharts.isReady = true;”在调用我的AmCharts功能之前。例如:
var chartData1 = [];
function generateChartData() {
...
}
function createStockChart() {
...
}
if ($('.amChartDivExists').length > 0) {
AmCharts.isReady = true;
generateChartData();
createStockChart();
}