gpt4 book ai didi

angularjs - Angular - 在 ng-repeat 中对对象进行排序

转载 作者:行者123 更新时间:2023-12-05 04:13:08 25 4
gpt4 key购买 nike

我有如下 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" >

https://plnkr.co/edit/3lbvJCegtHYIougIhK1R?p=preview

关于angularjs - Angular - 在 ng-repeat 中对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38389291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com