In questo modo il mio istogramma funziona correttamente, quando lo carico come durante il caricamento della pagina.Perché google graph non funziona quando si carica dal controller di AngularJS. Il browser diventa bianco senza errori nella console
$(document).ready()
{
x = new Array(10);
for (var i = 0; i < 10; i++) {
x[i] = new Array(2);
x[i][0]="txt";
x[i][1]=100;
}
loadChart2(x);
}
Google Codice istogramma: (adottato da Google charting api)
function loadChart2 (histValues)
{
console.log('histValues:'+histValues);
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable(histValues);
var options = {
hAxis: {title: 'Score', titleTextStyle: {color: 'red'}}
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
};
Il mio problema:
Ma quando chiamo loadChart2() da dentro il mio controller angularJS, intero schermo diventa bianco e nessun errore viene mostrato nella console del browser.
$http({method: 'GET', url: urlGetHistogramData, timeout: maxTime})
.success(function (data) {
x=new Array(data.score_hist.length);
var i=0;
$.each(data.score_hist, function(){
x[i] = new Array(2);
x[i][0]=this.interval_start;
x[i][1]=this.count;
i++;
});
loadChart2(x);
});
informazioni di debug:
posso vedere in console che interval_start
e count
valori vengono stampate, quindi il servizio è la restituzione di valori pregiati
Inoltre, posso vedere histValues
attesa stampata sulla console da loadChart() funzione.
Ecco una questione connessa, nel caso in cui si desidera più informazioni dettagliate e approfondite How to create a historgram from json
Appena ho messo loadChart2()
funzione in qualsiasi AngularJS onClick o di qualsiasi funzione, ottengo schermo bianco totale, senza errore nella console . Sembra, nessuno ha commenti sul mio problema, terrò questa pagina aggiornata con le mie conclusioni su questo.
Edit io sto inseguendo una soluzione a questo problema, ho fatto una domanda relativa a questo problema https://stackoverflow.com/questions/16816782/how-set-charts-data-in-google-chart-tool-directive-module-from-a-dynamically-po
Sembra che tu stia cercando di manipolare il DOM nel punto sbagliato nello stack di esecuzione. Mi chiedo quali risultati otterresti se tu chiamassi 'loadChart2()' da una direttiva. –
+ 1. Hai ragione riguardo alla manipolazione del DOM (ho fatto come ultima risorsa a causa della limitazione con l'API grafica di Google). Forse usare la direttiva sarebbe un modo per farlo. Sono nuovo di AngularJS non so molto di direttiva, per favore può dare qualche indizio, come utilizzare la direttiva in questo caso. Grazie!! – Watt
quindi? hai provato a fare il bootstrap angolare in google.setOnLoadCallback come ti ho già spiegato? perché provare a caricare la libreria del grafico dopo l'avvio angolare è la causa di quello strano errore della pagina bianca. Quindi, le cose bianche -> caricamento della libreria dei grafici errato, l'errore "Non un array" -> qualunque cosa tu stia passando non è un array (prova a testarlo con Array.isArray). – coma