2014-01-27 12 views
8

Ich würde gerne sortieren nach ob eine Variable wahr oder falsch ist.OrderBy boolescher Wert mit AngularJS ng-repeat

Lassen Sie uns sagen, wir haben eine Variable wie so:

groups = { 
    { name: 'first', value: true }, 
    { name: 'second', value: false }, 
    { name: 'third', value: true }, 
    { name: 'fourth', value: false } 
} 

Und wir können durch sie Schleife wie so:

<div ng-repeat="group in groups"> 
    {{group.name}} {{group.value}} 
</div> 

dem Sie folgende geben:

first true 
second false 
third true 
fourth false 

Aber wenn ich nach einem booleschen Wert sortieren wollte, dann könnte ich das tun:

<div ng-repeat="group in groups | filter:{value:true}"> 
    {{group.name}} {{group.value}} 
</div> 
<div ng-repeat="group in groups | filter:{value:false}"> 
    {{group.name}} {{group.value}} 
</div> 

die mir die folgende Ausgabe geben würde (was ich will):

first true  
third true 
second false 
fourth false 

Gibt es eine Möglichkeit, dies orderBy oder filter in einer einzigen ng-repeat mit zu tun?

+0

Haben Sie versucht, '" ng-repeat = "Gruppe in Gruppen | orderBy: 'value' "' – Satpal

+0

Haben Sie versucht, den 'orderBy' Filter zu benutzen oder er funktioniert nicht gut für boolesche Werte? Es ist nicht klar aus Ihrer Frage .. – GRaAL

+3

Ah, danke.Es war einfach ein Fall des Umschaltens die Variablennamen und nicht den Objektnamen in. Ich hatte 'orderBy: '- group.value': true', aber es hätte' orderBy: '- value': true' sein sollen. –

Antwort

4

Verwendung Variablenname obeject statt

orderBy:'Event':false 

Sie die gewünschte Ausgabe wie erhalten -

first true  
third true 
second false 
fourth false 
+1

Was ist in diesem Fall 'Event'? ? – xzegga

6

orderBy akzeptiert und Sorten von booleans.

Bestellen Sie das wiederholte Element durch den der ‚Wert‘ Eigenschaft ‚Gruppe‘:

ng-repeat="group in groups | orderBy: 'value'" 

Diese Reihenfolge umkehren:

ng-repeat="group in groups | orderBy: '-value'" 

Wenn Sie möchten auch sortieren nach dem " name 'Eigenschaft von' Gruppe ':

ng-repeat="group in groups | orderBy: ['value','name']" 
Verwandte Themen