2015-06-25 9 views
6

Diciamo che ho questo oggetto:ng-repeat su array di array, orderBy sottoarray indice

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

Dato che, e questo modello:

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

... come posso ordinare un ng-repeat dalla seconda "colonna" di ogni riga (il valore nell'indice 1 dell'elemento row specificato)?

Sono corretto che Angular non supporta questo caso — senza dover scrivere una funzione di ordinamento personalizzata? (Sto solo prototipando, quindi usando ng-init per definire le variabili del mio ambito invece di creare un controller.)

risposta

3

In realtà lo fa. È possibile creare un ordine personalizzato per funzioni.

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

Hai solo dovrebbe utilizzare orderBy:'1':

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

Demo

+0

Vincitore vincitore, la cena di pollo! – core

+0

Grande. Ma non capisco perché quell'ordine per valore sia una stringa? –

Problemi correlati