Подтвердить что ты не робот

OrderBy значение элемента массива в Angular ng-repeat

Как я могу получить директиву Angular ng-repeat для сортировки списка по фактическому значению каждого элемента, а не по значению свойства для каждого элемента?

например:

<ul>
    <li ng-repeat="item in items | orderBy:'WHAT_GOES_HERE??'">{{item}}</li>
</ul>

Здесь есть скрипка для игры с: http://jsbin.com/okatur/1/edit

Я понимаю, что могу просто сделать .sort() в массиве, но это мой единственный вариант?

4b9b3361

Ответ 1

Так как 1.3.0-rc.5

Поскольку AngularJS 1.3.0-rc.5, фильтр orderBy (см. документацию) автоматически сортирует массив, используя его элементы, если дополнительные параметры не предоставляются.

<li ng-repeat="item in items | orderBy">{{item}}</li>

JS Bin

До 1.3.0-rc.5

Фильтр orderBy (см. историческая документация) также может принимать функцию как второй параметр, возвращаемое значение которого будет сравниваться с помощью <, = и >. Вы можете просто использовать angular.identity (см. документацию) для этой цели:

$scope.identity = angular.identity;
<li ng-repeat="item in items | orderBy:identity">{{item}}</li>

JS Bin

Ответ 2

Вы можете попробовать следующее.

<ul>
    <li ng-repeat="item in items | orderBy:'toString()'">{{item}}</li>
</ul>