петля углового массива и функция сортировки

0

У меня есть массив объектов, каждый объект содержит следующие свойства:

comments:""
id:1
inProgress:false
jobDescription:null
lastUpdateDate:"07/08/2016"
lastUpdatedByUser:"[email protected]"
product:"Chicken"
status:Object
templateName:"Standard Template"
uploadDate:"07/08/2016 10:36:01"

Мне нужна функция в угловом, чтобы я мог перебирать весь список и сортировать через uploadDate и иметь самые последние первые и т.д.

Я попытался использовать это, но это не сработало:

vm.uploads = $filter('orderBy')(vm.uploads, vm.uploads[0].uploadDate, reverse);
Теги:
arrays
loops
sorting

2 ответа

2

Array.prototype.sort достаточно:

vm.uploads.sort(function(a,b){
   return  new Date(a.uploadDate).getTime()- new Date(b.uploadDate).getTime();
})

Если вам нужен заказ desc, просто переключите a & b

1

У вас есть синтаксическая ошибка, вы должны называть ее следующим образом:

vm.uploads = $filter('orderBy')(vm.uploads, 'uploadDate', true)

Взгляните на эту простую демонстрацию:

(function() {
  angular
    .module('app', [])
    .controller('MainCtrl', MainCtrl);

  function MainCtrl($filter) {
    var vm = this;

    vm.reverse = false;
    vm.uploads = [  
       {  
          "comments":"",
          "id":1,
          "inProgress":false,
          "jobDescription":null,
          "lastUpdateDate":"07/08/2016",
          "lastUpdatedByUser":"[email protected]",
          "product":"Chicken",
          "status":1,
          "templateName":"Standard Template",
          "uploadDate":"07/08/2016 10:36:01"
       },
       {  
          "comments":"",
          "id":2,
          "inProgress":true,
          "jobDescription":null,
          "lastUpdateDate":"08/08/2016",
          "lastUpdatedByUser":"[email protected]",
          "product":"Horse",
          "status":1,
          "templateName":"Custom Template",
          "uploadDate":"08/08/2016 12:49:05"
       }
    ];

    vm.order = function () {
      vm.uploads = $filter('orderBy')(vm.uploads, 'uploadDate', vm.reverse = !vm.reverse);
    }
  }
})();
<!DOCTYPE html>
<html ng-app="app">

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
</head>

<body ng-controller="MainCtrl as main">
  <ul>
    <li ng-repeat="upload in main.uploads track by $index" ng-bind="upload.uploadDate"></li>
  </ul>
  <hr>
  <button type="button" value="order" ng-click="main.order()">Change order</button>
</body>

</html>

Я бы рекомендовал вам проверить документы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню