5

ich einen dynamischen Datenmodell über eine websocket kommen haben, die wie folgt aussieht:Mit orderBy auf ng-repeat mit einem mehrdimensionalen Array

var results = [ 
    [ 
     {name:'A'}, 
     {price: 0.00} 
    ], 
    [ 
     {name:'C'}, 
     {price: 0.00} 
    ], 
] 

Ich bin mit meiner ng-repeat wie folgt:

ng-repeat="result in results" 

Jedes Mal, wenn ich brauche eines des Arrays innerhalb des Ergebnisses Array zuzugreifen ich tun:

result[0].name 

Das Problem, das ich habe, ist, dass die ord Erby Filter auf ngRepeat scheint nicht, mir zu erlauben, dies zu tun:

ng-repeat="result in results | orderBy: result[0].name 

Vielleicht ist es ein grundlegendes Missverständnis, wie Angular funktioniert, aber ich kann nicht verstehen, warum dies nicht funktionieren würde. Ist es eine falsche Syntax oder liegt es an meinem dynamischen Datenmodell? Sollte ich einen $ scope einrichten. $ Irgendwo anwenden?

Ich habe versucht, mit Anführungszeichen, und ich habe versucht, ein Prädikat in der Funktion, die die Daten zunächst parsen, setzen Prädikat für jede Instanz der result.name wie es durchkommt, aber dies auch nicht Arbeit.

Jede Hilfe wird sehr geschätzt.

+0

die 'orderBy' docs lesen, erklären sie, was Sie – charlietfl

+0

@tymeJV fragen: Das Problem ist, dass die gegebene Array-Arrays enthält, nicht einzelne Objekte. –

+0

@HimmetAvsar - Ahh, das habe ich auf den ersten Blick nicht gesehen. – tymeJV

Antwort

10

Diese Frage ist wirklich interessant. Da orderBy das aktuelle Objekt verwendet, müssen Sie die Bestellzeichenfolge relativ zuweisen.

Dies wird den Trick:

ng-repeat="result in results | orderBy: 'this[0].name' 
+0

Brilliant! Danke ein paar @HimmetAvsar, das war es genau. –