Не могу понять, почему ng-repeat не сортирует

#javascript #angularjs #angularjs-ng-repeat

#javascript #angularjs #angularjs-ng-repeat

Вопрос:

У меня есть следующий HTML, который я хотел бы отсортировать в обратном хронологическом порядке по newestComment:

 <div class="list list-inset"
    ng-repeat="(threadId, thread) in messageThreads | orderBy:'thread.newestComment'"
    ng-if="thread.newestComment > messageClearTime">
    <div class="item item-divider">
        {{thread.newestComment}}
    </div>
</div>
 

Данные (messageThreads) — это с идентификатором потока в качестве ключа и newestComment в качестве метки времени:

 { "5381897" : {
      "newestComment" : 1403280014,
      "title" : "asdf"
    },
  "5595015" : {
      "newestComment" : 1403192555,
      "title" : ""
    },
  "5761260" : {
      "newestComment" : 1403126044,
      "title" : ""
    },
  "5838498" : {
      "newestComment" : 1403279962,
      "title" : "Share Test"
    }
}
 

Что бы я ни делал, я не могу понять, как сделать сортировку — она всегда просто выводится в том порядке, в котором находится массив. Любая помощь?

Ответ №1:

orderBy Фильтр работает только с массивами объектов, а не с самими объектами. Смотрите Документы здесь.