У меня есть массив объектов, каждый объект содержит следующие свойства:
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);
vm.uploads.sort(function(a,b){
return new Date(a.uploadDate).getTime()- new Date(b.uploadDate).getTime();
})
Если вам нужен заказ desc
, просто переключите a
& b
У вас есть синтаксическая ошибка, вы должны называть ее следующим образом:
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>
Я бы рекомендовал вам проверить документы.