2015-02-02 11 views
6

Moje HTML:obciążenia JSON do wyświetlania danych, używając NG-repeat {angularjs}

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

Kim JS:

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

Wykres nie zostanie wyświetlona, ​​nie wiem czemu? Nie dostaję żadnego błędu w konsoli.

UPDATE: MY JSON pliki zawartości

[{"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"] 
      } 

    ]} 
] 

KONSOLA 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

możesz przynieść to w skrzypcach? –

+1

Nie wyświetla się, ponieważ dane są wyświetlane po renderowaniu wykresu. Potrzebujesz danych do aktualizacji wykresu po załadowaniu danych. Zakładam, że wykres jest jakimś rodzajem biblioteki, więc normalny skrót kątowy nie zaktualizuje zmiennych, które podajesz do wykresu. – ribsies

Odpowiedz

5

Problem z kodem jest json jest obietnica obiekt nie dane zwracane z AJAX rozmowy. Również twoje pytanie ma "aspekt powracający z żądania AJAX". Upewnij się, że rozumiesz powiązany problem, sprawdź bardzo popularne pytanie: this.

właściwy sposób ustawić dane, zakres pobrane z żądania AJAX w kątowego jest to zrobić wewnątrz ówczesnego zwrotnego:

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

Wypróbowałem Twoją sugestię, ale wykres nadal nie jest renderowany. Może być jakiś problem w moim FORMACIE DANYCH JSON. Zamieszczam to na moim pytaniu. Proszę spojrzeć. – Jinandra

+0

Umieść '{{ocw}}' poniżej obszaru roboczego i zobacz, czy jest wypełnione. Jeśli tak, problem dotyczy biblioteki wykresów, która nie jest aktualizowana po zmianie danych. – dfsq

+0

Oczywiście spróbuję, przetestowałem bibliotekę wykresów i sprawdziłem jej działanie. – Jinandra

4

W ty przypadek json zmienna ma nic ale zawiera promise obiekt.

obietnica i powinny być zawsze rozwiązać stosując .then

KOD

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 
    }) 
}); 

byłoby to pomóc.

Dzięki.

+0

@sanki Dlaczego istnieje tablica wewnątrz tablicy '" data ": [[" 90 "," 99 "," 80 "," 91 "," 76 "," 75 "," 60 "," 67 "," 59 "," 55 "]],"? pojedyncza tablica powinna wystarczyć do "danych": [["90", "99", "80", "91", "76", "75", "60", "67", "59", "55"] '.. –

+0

@sanki Jeśli chcesz, możesz przyjąć moją odpowiedź też, jak na http://stackoverflow.com/questions/28278096/angular-js-loading-data-for-chart/28278459# 28278459 problem został rozwiązany dla json –

+0

@sanki To fajna sprawa .. opowiedz mi o tym po aktualizacji pytania. Dzięki –

Powiązane problemy