2016-06-14 7 views
0

Ich versuche, eine Liste von Kategorien als xAxis für mein Balkendiagramm mit JavaScript und einem JSON-Objekt hinzuzufügen. Ich habe bisher keinen Erfolg gehabt, wie der folgende Code die folgenden entlang der xAchse produziert:Hinzufügen von Kategorien zu Highcharts über Loop

[object Object]

Das JSON-Objekt Ich erhalte ist dies wie:

0: {Item: "textforyou", Num: 88} 
1: {Item: "MoreText", Num: 22} 
2: {Item: "SimpleStuff", Num: 85} 

ich möchte die die Kategorien auf der xAchse haben aussehen wie folgt aus:

textforyou
more
SimpleStuff

Dieses Stück Code ist, wo ich mein JSON-Objekt zu nehmen und zu versuchen, die Kategorien und Serien-Daten für sie zu bekommen.

   $.ajax({ 
       xhrFields: { withCredentials: true }, 
       url: areaUrl + "api/Problem/ProblemsYTD", 
       success: data => { 
        self.isLoading(false); 
        self.data(data); 
        self.setPlotData(data); 
        self.isLoaded(true); 
       }, 
       error: data => { 
        self.loadingError(true); 
       } 
      }); 
     } 

     self.setPlotData = (data: any) => { 
      var len = data.List.length, 
       i; 

      var dataCats = new Array(); 

      for (i = 0; i < len; i++) { 
       dataCats.push(
        { name: data.List[i].Service } 
       ) 
      } 

      self.plotDataLabels.push({ data: dataCats }); 

      var dataItems = []; 

      for (i = 0; i < len; i++) { 
       dataItems.push(
        { y: data.List[i].DaysOpen } 
       ) 
      } 



      self.plotData.push({ data: dataItems }); 
     } 

schließlich auf der Seite, wo das Balkendiagramm erstellt wird, ist dies der Befehl, den ich für die xAchse Kategorie Abschnitt der Seite haben.

   xAxis: { 
       categories: viewModel.plotDataLabels(), 
       crosshair: false 
      }, 

Ich bin in der Lage, diese feinen für die Reihendaten zu tun, aber ich kann nicht scheinen, richtig für die Kategorien/Text zu erhalten. Jede Hilfe wäre willkommen.

EDIT: Per Anfrage, wenn ich console.log ViewModel.plotDataLabels(), bekomme ich ein einzelnes Objekt zurück mit "Daten: Array [3]". Sobald ich das Array zugreifen, erscheint alles wie folgt

Dropdown 0: Object 
Dropdown 1: Object 
Dropdown 2: Object 
    name: "SimpleStuff" 
    __proto__: Object 
+0

Es scheint, dass Sie die Kategorien auf ein einzelnes Objekt und dann die Zahlen "1, 2" einstellen. 'console.log' Ihr' viewModel.plotDataLabels() 'in Ihrem Browser, damit wir Ihnen besser helfen können herauszufinden, was Sie tun müssen, um die richtigen Kategorien zu haben. Überprüfen Sie diese Dokumentation, wenn Sie auch Hilfe benötigen: http://api.highcharts.com/highcharts#xAxis.categories – superjisan

+0

Ich habe die console.log-Ergebnisse am Ende der Frage hinzugefügt. Im Grunde genommen scheint es ja in ein einzelnes Objekt zu gehen, aber ich bin mir nicht sicher, wie ich sicherstellen kann, dass ich auf jedes Textelement innerhalb des Objekts für meine xAxis-Kategorien zugreife. Wenn es einen besseren Weg gibt, bin ich auch dafür offen. – Avegavalencia

Antwort

0

Sie benötigen ViewModel.plotDatalabels() zu manipulieren, um sicherzustellen, dass Sie nur den Namen bekommen und nicht das ganze Objekt. Dies sollte funktionieren, ersetzen Sie Ihre Kategorien Wert durch die folgenden

categories: viewModel.plotDataLabels().map(function(obj){ return obj.name; }) 
+0

Leider funktioniert das noch nicht. Wenn ich console.log die Datei self.plotDataLabels.push ({data: dataCats}) schreibe, bekomme ich nur 2 in der Konsole. Ich bin nicht sicher, was ich falsch mache, um die Daten zu bekommen. – Avegavalencia

+1

Das hat aber letztendlich funktioniert. Ich musste nur ändern, wie die Daten eingezogen wurden. – Avegavalencia

Verwandte Themen