【问题标题】:Angular group by ng-repeat filterng-repeat 过滤器的角度组
【发布时间】:2015-06-08 14:04:43
【问题描述】:

我正在使用这个库: https://github.com/a8m/angular-filter#groupby

所以我可以对列表项进行分组,但我的问题有点不同,

假设这是我的数据集:

[
    {name: 'foo', date: '2015-01-01'},
    {name: 'bar', date: '2015-01-04'},
    {name: 'bazz', date: '2015-02-22'},
    {name: 'ahh', date: '2015-06-15'},
    {name: 'qwe', date: '2015-06-16'},
]

我想按月和年过滤它,而图书馆不能满足我的需要。

<li ng-repeat="(key,value) in items | groupBy: 'date'">
    <h1><--MONTH--></h1>
    <p>{{value.details}}</p>
</li>

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    我认为您可以将日期字符串转换为日期部分,如日、月和年,然后将嵌套属性传递给 groupBy 过滤器。

    将数据转换成这个。

    [
        {name: 'foo', date: {day: 1, month: 'January', year: 2015 }
        {name: 'foo', date: {day: 1, month: 'February', year: 2015 }
        ..
        ..
    ]
    

    您可以使用以下逻辑将日期字符串转换为日期部分

    var data = [....]
    var monthNames = ["January", "February", "March", "April", "May", "June",
          "July", "August", "September", "October", "November", "December"
        ];
    angular.forEach(data, function (d) {
      d.date = new Date(d.date);
      d.date = {
        d: dt.getDate(),
        m: monthNames[d.date.getMonth()],
        y: d.date.getFullYear() 
      };
    })
    

    HTML

    <li ng-repeat="(key,value) in items | groupBy: 'date.month'">
        <h1><--MONTH--></h1>
        <p>{{value.details}}</p>
    </li>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2017-02-21
      • 1970-01-01
      相关资源
      最近更新 更多