Фильтр AngularJs orderBy не работает с отслеживанием

Я не понимаю, почему orderBy не работает, порядок вывода ng-repeat одинаков независимо от того, какое свойство я передаю в orderBy, например, orderBy: '-year1comp' или orderBy: 'year1comp' не имеет никакого эффекта.

$scope.expTest = [{
    "company": "new",
    "schedule": "fulltime",
    "titlecomp": "c",
    "status": "temporary",
    "locationcomp": "fdsf",
    "category": "114",
    "month1comp": 4,
    "year1comp": 2004,
    "month2comp": 5,
    "year2comp": 1997,
    "desccomp": "dafds",
    "companydesc": "fdsaf",
    "_id": 0
}, {
    "company": "new",
    "schedule": "fulltime",
    "titlecomp": "b",
    "status": "temporary",
    "locationcomp": "fdsf",
    "category": "114",
    "month1comp": 4,
    "year1comp": 2015,
    "month2comp": 2,
    "year2comp": 2010,
    "desccomp": "dafds",
    "companydesc": "fdsaf",
    "_id": 1
}, {
    "company": "company name",
    "schedule": "fulltime",
    "titlecomp": "a",
    "status": "contract",
    "locationcomp": "sfdg",
    "category": "114",
    "month1comp": 2,
    "year1comp": 2015,
    "desccomp": "fdgsfdg",
    "companydesc": "fdgfdg",
    "_id":2
}]

шаблон HTML

<div class="multiple-repeat-container" 
ng-repeat="item in expTest track by $index | orderBy:'-year1comp' "> ... </div>

person ericsicons    schedule 17.09.2015    source источник
comment
фильтры идут перед отслеживанием   -  person charlietfl    schedule 17.09.2015


Ответы (1)


Вам нужно переместить отслеживание после того, как orderBy:

<div class="multiple-repeat-container" ng-repeat="item in expTest | orderBy:'-year1comp' track by $index "> ... </div>

В документации указано

Обратите внимание, что выражение отслеживания должно стоять последним после любых фильтров и выражения псевдонима.

person Will    schedule 17.09.2015
comment
А, спасибо! честно говоря, angular должен работать немного лучше с их документацией. Я не нашел предупреждения об этом в docs.angularjs .org/api/ng/filter/orderBy - person ericsicons; 17.09.2015