2015-06-25 4 views
6

Lassen Sie uns sagen, ich habe diese Aufgabe:ng-repeat auf Array von Arrays, orderBy Subarray Index

var rows = [ 
    [1, 2, 3, 4], 
    [11, 222, 3333, 4444] 
]; 

Da, und diese Vorlage:

<tr ng-repeat="row in rows | orderBy ????"> 
    <td ng-repeat="cell in row">{{ cell }}</td> 
</tr> 

... wie kann ich eine Bestellung aufgeben ng-repeat durch die zweite "Spalte" jeder Zeile (der Wert bei Index 1 des gegebenen row Elements)?

Bin ich richtig, dass Angular diesen Fall — nicht unterstützt, ohne eine benutzerdefinierte Sortierfunktion schreiben zu müssen? (Ich bin nur Prototyping, so ng-init zu verwenden, um meine Scope-Variablen zu definieren, anstatt einen Controller zu erstellen.)

Antwort

3

Eigentlich tut es. Sie können eine benutzerdefinierte Reihenfolge nach Funktionen erstellen.

http://plnkr.co/edit/f6hCbHcLkrjyTODvDWjM?p=preview

<div ng-repeat="row in rows | orderBy:secondIndex"> 
    {{row}} 
</div> 

//In controller 
$scope.secondIndex = function(arr){ 
    return arr[1]; 
} 
2

Sie sollten nur orderBy:'1' verwenden:

<tr ng-repeat="row in rows | orderBy:'1'"> 
    <td ng-repeat="cell in row">{{ cell }}</td> 
</tr> 

Demo

+0

Gewinner Gewinner Huhn Abendessen! – core

+0

Großartig. Aber ich verstehe nicht, warum dieser orderBy-Wert eine Zeichenfolge ist? –