我有如下 Angular 对象:
var objs = {
"1" : {name:'abc',createdAt:'2016-06-25'}
"4" : {name:'abc',createdAt:'2015-07-06'}
"7" : {name:'abc',createdAt:'2015-03-12'}
"2" : {name:'abc',createdAt:'2016-01-04'}
"6" : {name:'abc',createdAt:'2016-06-17'}
}
我想按属性“createdAt”DESC 顺序在 ng-repeat 中对这个 objs 进行排序 (orderBy)。
Please Note down that objs is of type Object not Array. I am iterating over objects.
如何实现?
<tr ng-repeat="obj in objs track by $index | orderBy : createdAt : true" >
<td>{{obj.createdAt}}</td>
</tr>
我应该使用 $index 还是不使用?
这是 plnkr
最佳答案
内置的 orderBy
不适用于对象,但有人已经为您尝试做的事情创建了一个过滤器:
http://justinklemm.com/angularjs-filter-ordering-objects-ngrepeat/
yourApp.filter('orderObjectBy', function() {
return function(items, field, reverse) {
var filtered = [];
angular.forEach(items, function(item) {
filtered.push(item);
});
filtered.sort(function (a, b) {
return (a[field] > b[field] ? 1 : -1);
});
if(reverse) filtered.reverse();
return filtered;
};
});
<tr ng-repeat="item in items | orderObjectBy : 'createdAt' : true" >
关于angularjs - Angular - 在 ng-repeat 中对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38389291/