2014-01-27 3 views
8

Я хотел бы иметь возможность сортировать, является ли переменная истиной или ложью.OrderBy логическое значение с AngularJS ng-repeat

Допустим, мы имеем переменную так:

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

И мы можем цикл через него, как так:

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

который даст вам следующее:

first true 
second false 
third true 
fourth false 

Но если бы я хотел, чтобы сортировать по логическому значению, тогда я мог бы сделать это:

<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> 

Что бы дать мне следующий вывод (я хочу):

first true  
third true 
second false 
fourth false 

Есть ли способ сделать это с помощью orderBy или filter в одном ng-repeat?

+0

Вы пробовали '' ng-repeat = "группу в группах | orderBy: 'value' "' – Satpal

+0

Вы пытались использовать фильтр 'orderBy', или он не подходит для логических значений? Неясно, из вашего вопроса .. – GRaAL

+3

А, спасибо. Это был просто случай переключения имена переменных и отсутствие имени объекта в. У меня был 'orderBy: '- group.value': true', но он должен был быть' orderBy: '- value': true'. –

ответ

4

использование имени переменной вместо obeject

orderBy:'Event':false 

вы получите желаемый результат, как -

first true  
third true 
second false 
fourth false 
+1

Что такое «Событие» в этом случае ? – xzegga

6

OrderBy принимает и сортирует по булевы.

Заказывайте повторяющимся по свойству «значение» «группы»:

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

Это обратный порядок:

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

Если вы хотели бы также отсортировать ' name 'property of' group ':

ng-repeat="group in groups | orderBy: ['value','name']" 
Смежные вопросы