如何创建标记,将AngularJS的ng-repeat输出按日期(月)分组

How to create markers to group AngularJS ng-repeat output by date (month)?

本文关键字:输出 ng-repeat 日期 分组 AngularJS 何创建 创建      更新时间:2023-09-26

对于我正在做的一个项目,我正在使用AngularJS的ng-repeat输出数据数组,并试图按月分组输出。不需要排序,因为我得到的数据已经排序过了,我只需要按月对其进行分组。

我从API得到的数据看起来像这样:

{"userinfo": [{
    "date": "1305838800000",
    "name": "john",
    "lastname": "dough",
    "city": "",
    "province": "noord-holland",
    "device": "macbook",
    "phone": "iphone",
    "provider": "t-mobile"
}, {
    "date": "1305838800000",
    "name": "john",
    "lastname": "",
    "city": "amsterdam",
    "province": "noord-holland",
    "device": "macbook",
    "phone": "iphone",
    "provider": "vodafone"
},{
    "date": "1305838800000",
    "name": "john",
    "lastname": "",
    "city": "amsterdam",
    "province": "noord-holland",
    "device": "macbook",
    "phone": "iphone",
    "provider": "t-mobile"
}, {
    "date": "1305838800000",
    "name": "john",
    "lastname": "",
    "city": "amsterdam",
    "province": "noord-holland",
    "device": "macbook",
    "phone": "iphone",
    "provider": "vodafone"
}]}

在这里,字段field将是我想要分组的日期的历元日期。

虽然这个功能不会在AngularJS核心中出现:

https://github.com/angular/angular.js/issues/1649

你可以将一个数组重新分组为一个映射对象(Underscore.JS的groupBy就是一个很好的例子),或者创建一个新的groupBy过滤器/使用现有的过滤器,如:

https://github.com/samstokes/ng-group/

为在作用域上重新分组增加了一个优点——它只会发生一次,而过滤器会在每个摘要上重新求值。

在angular内置指令中不支持这种分组。您需要创建从服务器获得的模型副本(新集合),"手动"按月份(按日期)对对象进行分组,然后循环该副本(在视图中使用ng-repeat),而不是循环原始模型。