Question

Au départ, j'ai mis tous les AmChart configs dans AmCharts.prêt est tout a bien fonctionné.

<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>

En quelque sorte, il s'arrête de fonctionner quand je présenterai RequireJS, comme indiqué dans amCharts rencontre requireJS.Quel que soit le code à l'intérieur de AmChart.prêt de rappel ne sera pas exécuté.(Bizarrement il a été exécutée une seule fois pendant le débogage)

Était-ce utile?

La solution

Après quelques tests, j'ai réalisé AmChart.prêt seulement pousse le rappel à l' onReadyArray ce qui est plus tard sauté pour l'exécution après la fenêtre.charge/de l'événement onload.En d'autres termes, si AmChart est chargé après la fenêtre.événement onload, AmChart.prêt est inutile.Ma solution est comme suit:

<script>
    configChart = function() {
      /* Create charts stuff */
    };
    if (AmCharts.isReady) {
      configChart();
    } else {
      AmCharts.ready(configChart);
    }
</script>

Autres conseils

Ne fonctionne toujours pas les nouvelles versions (version 3.14.1 à cette époque), mais les correctifs qu'il appelle le handleLoad méthode manuelle:

AmCharts.handleLoad();

En l'appelant plusieurs fois ne semble pas faire de mal, non plus.

Parce que je charge dans des graphiques de manière asynchrone, je devais définir manuellement "amcharts.isready= true;"avant d'appeler mes fonctions d'amcharts.Par exemple:

var chartData1 = [];
function generateChartData() {
   ...
}

function createStockChart() {
   ...
}

if ($('.amChartDivExists').length > 0) {
    AmCharts.isReady = true;
    generateChartData();
    createStockChart();
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top