5

Ho un modello dinamico di dati in arrivo tramite un websocket, che assomiglia a questo:Utilizzando orderBy sul ng-repeat con un array multidimensionale

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

Sto usando il mio ng-repeat come segue:

ng-repeat="result in results" 

Ogni volta che ho bisogno di accedere ad una delle matrici all'interno della matrice risultato che faccio:

result[0].name 

il problema che sto avendo è che l'ord Filtro Erby su ngRepeat non sembra mi permette di fare questo:

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

Forse è un equivoco di fondo di come angolare opere, ma non riesco a capire perché questo non avrebbe funzionato. È sintassi errata o è dovuto al fatto che il mio modello di dati è dinamico? Dovrei impostare un $ scope. $ Applicare da qualche parte?

Ho provato con le virgolette, e ho provato a impostare un predicato nella funzione che analizza i dati inizialmente, impostando il predicato su ciascuna istanza di result.name mentre attraversa, ma anche questo non lavoro.

Qualsiasi aiuto è molto apprezzato.

+0

leggere la documentazione 'orderBy', spiegano quello che chiedete – charlietfl

+0

@tymeJV: Il problema è che l'array data contiene array, non singoli oggetti. –

+0

@HimmetAvsar - Ahh, non l'ho visto al mio primo sguardo. – tymeJV

risposta

10

Questa domanda è davvero interessante. Dato che orderBy utilizzerà l'oggetto corrente, è necessario assegnare la stringa dell'ordine relativamente.

Questo farà il trucco:

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

Brillante! Grazie a un gruppo @HimmetAvsar, è stato esattamente questo. –

Problemi correlati