2015-02-02 26 views
6

mio HTML:carico JSON per visualizzare i dati, utilizzando ng-repeat {} ANGULAR.JS

<div class="graph-display" ng-controller="jsonServerBox"> 
    <div class="bar-chart-box" ng-repeat="module in ocw.modules"> 
     <canvas class="chart chart-bar" data="{{module.data}}" labels="{{module.labels}}" series="{{module.series}}"></canvas> 
    </div> 
</div> 

miei JS:

app.controller('jsonServerBox', function($scope, $http) { 
    var json = $http.get('serverbox.json').then(function(res){ 
      return res.data; 
     }); 
    $scope.ocw = json;  
    }); 

non viene visualizzata la mappa, non so perché? Neanche io ricevo errori nella console.

UPDATE: I MIEI CONTENUTI JSON FILE

[{"modules":[ 
      { 
       "series":"SeriesA", 
       "data":["90", "99", "80", "91", "76", "75", "60", "67", "59", "55"], 
       "labels":["01", "02", "03", "04", "05", "06", "07","08","09","10"] 
      }, 

      { 
       "series":"SeriesB", 
       "data":["90", "99", "80", "91", "76", "75", "60", "67", "59", "55"], 
       "labels":["01", "02", "03", "04", "05", "06", "07","08","09","10"] 
      } 

    ]} 
] 

CONSOLE LOG:

modules: Array[2]0: Objectdata: Array[10]0: "90"1: "99"2: "80"3: "91"4: "76"5: "75"6: "60"7: "67"8: "59"9: "55"length: 10__proto__: Array[0]labels: Array[10]0: "01"1: "02"2: "03"3: "04"4: "05"5: "06"6: "07"7: "08"8: "09"9: "10"length: 10__proto__: Array[0]series: "SeriesA"__proto__: Object1: Objectdata: Array[10]0: "90"1: "99"2: "80"3: "91"4: "76"5: "75"6: "60"7: "67"8: "59"9: "55"length: 10__proto__: Array[0]labels: Array[10]0: "01"1: "02"2: "03"3: "04"4: "05"5: "06"6: "07"7: "08"8: "09"9: "10"length: 10__proto__: Array[0]series: "SeriesB" 
+0

potresti portarlo in un violino? –

+1

Non viene visualizzato perché stai ricevendo i dati dopo il rendering del grafico. Quindi hai bisogno di qualcosa per aggiornare il grafico una volta che i dati effettivamente vengono caricati. Suppongo che il grafico sia una specie di libreria, quindi il normale $ angular digest non aggiornerà le variabili che dai al grafico. – ribsies

risposta

5

Il problema con il vostro codice è che json è la promessa oggetto non i dati restituiti dalla chiamata AJAX. Anche la tua domanda ha l'aspetto di "ritorno dalla richiesta AJAX". Assicurati di aver compreso il problema correlato, controlla la domanda molto popolare this.

modo corretto di impostare i dati di portata recuperati con richiesta AJAX in angolare è di farlo all'interno poi richiamata:

app.controller('jsonServerBox', function ($scope, $http) { 
    $http.get('serverbox.json').then(function (res) { 
     $scope.ocw = res.data; 
    }); 
}); 
+0

Provato il tuo suggerimento, ma il grafico non viene ancora visualizzato. Potrebbe esserci qualche problema nel mio JSON DATA FORMAT. Pubblicandolo nella mia domanda. Per favore guarda. – Jinandra

+0

Metti '{{ocw}}' sotto la tela e vedi se viene popolata. Se è così, allora il problema è con la libreria di carte che non si aggiorna quando i dati cambiano. – dfsq

+0

Certo che proverò, ho testato la libreria di grafici e il suo funzionamento soddisfacente. – Jinandra

4

Nel caso si json variabile non è altro che contiene promise oggetto.

e promettono dovrebbe sempre essere risolto utilizzando .then

CODICE

var json = $http.get('serverbox.json').then(function(res) { 
    return res.data; 
}); 
json.then(
    //success callback 
    function(data) { 
     $scope.ocw = data 
    }, 
    //error callback 
    function() { 
     //error handling 
    }) 
}); 

Ciò aiuterà.

Grazie.

+0

@sanki Perché c'è una matrice all'interno di un array '" dati ": [[" 90 "," 99 "," 80 "," 91 "," 76 "," 75 "," 60 "," 67 "," 59 "," 55 "]],'? la singola matrice dovrebbe essere abbastanza fine come "dati": [["90", "99", "80", "91", "76", "75", "60", "67", "59", "55"] '.. –

+0

@sanki Se lo desideri, puoi accettare anche la mia risposta, come da http://stackoverflow.com/questions/28278096/angular-js-loading-data-for-chart/28278459# Il problema 28278459 è stato risolto per json –

+0

@sanki Questa è una cosa interessante ... sappilo una volta che aggiorni la tua domanda..Grazie –

Problemi correlati