2016-08-25 1 views
0

FilterEckig: ng-repeat umgekehrter Reihenfolge des Objekts

app.filter('orderObjectBy', function() { 
    return function(items, field, reverse) { 
    var filtered = []; 
    angular.forEach(items, function(item) { 
     filtered.push(item); 
    }); 
    filtered.sort(function (a, b) { 
     return (a[field] > b[field] ? 1 : -1); 
    }); 
    if(reverse) filtered.reverse(); 
    return filtered; 
    }; 
}); 

Daten JSON:

{ 
    "results": { 
    "100": { 
     "numbers": { 
     "1": { 
      "key": "value" 
     }, 
     "2": { 
      "key": "value" 
     }, 
     "3": { 
      "key": "value" 
     } 
     } 
    }, 
    "200": { 
     "numbers": { 
     "1": { 
      "key": "value" 
     }, 
     "2": { 
      "key": "value" 
     }, 
     "3": { 
      "key": "value" 
     } 
     } 
    } 
    } 
} 

Render:

<div ng-repeat="(k,v) in results"> 
    <span ng-repeat="(k1,v1) in v | orderObjectBy:k1:true">{{k1}}</span> 
</div> 

Die orderObjectBy:k1:true nicht den "Schlüssel" zurückkehrt, aber eine Anordnung der Schlüssel, z 0 1 2. Wie kann ich das beheben und die Bestellung stornieren?

+0

Sie können den Umkehrfilter direkt in Winkel verwenden. –

+0

@ShankarShastri siehe Updates in der Frage. Danke im Voraus. :) – Steve

Antwort

2

können Sie versuchen, diese

ng-repeat='item in items| orderBy:item.key:reverse' 

mit oder

ng-repeat='item in items.reverse()' 
+0

Ich würde mit der ersten Option gehen; Es wird generell davon abgeraten, einen Funktionsaufruf als Quelle für ngRepeat zu verwenden. –

+0

@ShankarShastri @HarrisWeinstein Ich versuchte 'ng-repeat =" (Schlüssel, Wert) in obj | orderBy: Schlüssel: reverse "' und ich bekomme einen Fehler 'angular.js: 13550 Fehler: [orderBy: notarray]'. Denken Sie daran, wir versuchen dies für ein Objekt und nicht für ein Array. Wenn ich 'toArray: true' wie in 'ng-repeat = "(Schlüssel, Wert) in obj | toArray: true | orderBy: key: reverse" ', bekomme ich einen Fehler:' TypeError: Object.defineProperty wurde auf non aufgerufen -Objekt'. Irgendwelche Ideen? – Steve

+0

Können Sie uns das Array von Object zeigen? –

1

In meinem Fahrräder CMS sein kann (wo Fahrräder sind obj) ich die Fahrräder Liste

Das ist die Art und Weise umkehren wollte Ich kehrte um:

<tr ng-repeat="bike in bikes | orderBy: '-' "> 

Ich hoffe, dass das jemandem hilft: D

Verwandte Themen