2016-04-22 6 views
3

Ich benutze Angular JS und Google Places API, um eine Web-App zu erstellen.AngularJS: OrderBy Descending (null Einträge)

Ich habe eine ng-repeat, die derzeit von "Bewertung" absteigend geordnet wird (orderBy: '- Bewertung'). Daher werden x Orte aus der Google Places-API-JSON-Datei in absteigender Reihenfolge basierend auf der Bewertung aufgelistet.

JEDOCH werden Elemente/Orte, die keine Bewertung haben, als null klassifiziert und diese Einträge werden oben in meinem ng-repeat-Feed angezeigt. Diese sollten auf den Grund des Feeds gehen, da sie keine Bewertung haben?

So ein Beispiel dafür, wie ich das möchte sie suchen ist:

<ng-repeat orderBy:'-rating'> 
    <place rating="5"/> 
    <place rating="4.2"/> 
    <place rating="2.8"/> 
    <place rating="null"/> 
    <place rating="null"/> 
</ng-repeat> 

Was ist der beste Weg, um darüber zu gehen?

+0

Schauen Sie sich diese Antwort http://stackoverflow.com/questions/18604374/angularjs-orderby-with-empty-field/30028814 – DrinkBird

Antwort

3

Sortieren mit null oder undefined Wert mit orderBy Filter. Verwenden Sie [] Notation orderBy:[ '!rating', '-rating', ].

Das zeigt null oder undefined Wert an der Unterseite.

wie:

<li ng-repeat="option in options | orderBy:[ '!rating', '-rating', ]">{{option.name}}</li> 
+0

Danke, arbeitete diese ein Genuss. War nicht bewusst, dass Sie Arrays im orderBy-Filter verwenden könnten. Ich bin froh, dass ich keine Zeit verschwenden musste, um einen benutzerdefinierten Filter zu schreiben. –

+0

Gut funktioniert es beim Laden der Seite Einstellung auf die Bereichsvariable. Aber es scheint nicht in meiner Auswahlbox zu funktionieren. Mein Code ist wie folgt: Ausblick: Controller: vm.order = ['! rating', '- rating']; –

+0

könnten Sie mehr klären, was Sie wollen, indem Sie Ihre Antwort aktualisieren? –