2016-12-13 2 views
0

Ich möchte Daten auf der Grundlage der Anzahl der Zeilen und Spalten vom Benutzer zur Verfügung gestellt filtern.So drücken Sie Schlüssel und Wert in Array mit Angular

ich die Daten auf Controller immer nach dieser Excel-Datei zu lesen:

enter image description here

dies ist die Spaltenüberschrift Werte, die ich nach der Benutzer bin immer 5 als Eingabespalten bestanden hat: enter image description here

Dies sind die Zeilendaten, die ich bekomme, nachdem der Benutzer 4 Zeilen als Eingabe gegeben hat, um gerendert zu werden, hier sind Daten von 4 Zeilen: enter image description here

Innerhalb jeder Zeile gibt es Schlüsselwertpaar Spaltennamen enthält, und den Zellenwert:

enter image description here

Ich mag diese Zeilendaten auf der Grundlage der Header-Namen filtern, die durch Spalte kommen, so dass die Zeile hat nur die Werte, bis die Spalte definiert ist. Momentan bekomme ich ganze Zeilenwerte.

Ich habe eine Logik wie diese geschrieben, aber das funktioniert nicht.

var rowData=[]; 
for(var i=0;i<headerNames.length;i++){//headerNames contains column names 
    for(var j=0;j<data.length;j++){//data contains the rows data 
     for(var keyName in data[j]) 
     if(angular.equals(keyName,headerNames[i])){ 
      rowData.push({'keyName':data[j][keyName]})//I want only the key,values which matches the column names. I want to set the keyName value as array key but I am not getting its value instead it is coming like keyName:18 
     } 
     } 
    } 
} 

Hinzufügen des Bunkers für den Code. http://plnkr.co/edit/28Z44xDBug7nFCQnKZJL?p=preview

Ich bin in der Lage, die Daten auf UI filtern und nur die Zeilen- und Spaltendaten als pro Benutzereingabe erhalten. Aber ich brauche die gleichen Daten auf dem Controller, so dass ich es in MongoDb speichern kann. Ich möchte die Zeilendaten gemäß der Spalteneingabe filtern. Also, dass ich nur die Zeilendaten bekomme, bis die Spalte definiert ist.

Bitte schlagen Sie vor, wie kann ich die Daten filtern und die Zeilenwerte spleißen, so dass in Zeile i Wert bis zu den Spaltennummern definiert werden kann. Wenn ich zum Beispiel 4 Zeilen und 5 Spalten eingegeben habe, kann ich in meiner Zeile Daten nur Werte bis zur 5. Spalte haben und alle anderen Werte, die ich aus dem Array entfernen kann. In meinem Code kann ich derzeit nicht den Schlüsselwert als Array-Schlüssel festlegen.

Bitte helfen Sie mir, dieses Problem zu lösen.

+2

Bitte fügen Sie [mcve] in die Frage selbst ein, nicht in Bilder. Es sollte so sein, dass wir das Problem selbst reproduzieren können. Außerdem gibt es hier wenig eckigen Code; Sie könnten versuchen, ohne angular in Ihren Suchbegriffen zu suchen. –

Antwort

0

Sieht aus, als wärst du am meisten da. Sie müssen nur rowData als $ scope.rowData angeben, damit angle es erreichen kann, und das Angular-Dokument zeigt {{rowdata}} (zeigt $ scope.rowData an).

Sie werden wahrscheinlich brauchen sie in Spalten anzuordnen, obwohl so könnten Sie eine ng-repeat auf rowData zu tun, mit variabler = Zeile und in TR TD-Tags zeigen row.1

zB so etwas wie ..

<tr ng-repeat="row in rowData"> 
<td>{{row.1}}</td> 
<td>{{row.2}}</td> 
</tr> 
+0

Nein, eigentlich brauche ich diese Werte auf dem Controller selbst, da ich die Daten zum Speichern an mongodb übergeben muss. Also, im Grunde brauche ich die Daten, die nur benutzerdefinierte Zeilen und Spaltenwerte hat. zB wenn der Benutzer 4 Zeilen und 5 Spalten eingegeben hat, so sind die Daten, die ich brauche, 5 Spaltenkopf- und Zeilendaten nur bis zur 5. Spalte. –

Verwandte Themen