AngularJS ng-repeat过滤项目基于日期值

时间:2014-07-22 14:06:35

标签: angularjs angularjs-scope angularjs-ng-repeat angular-filters

我有一个简单的ng-repeat:

<li ng-repeat="data in myData.Entries">

  {{ data.EntryNumber }} --

  <strong>From</strong> {{ data.InfoDetails[0].FromDt.substring(6, data.InfoDetails[0].FromDt.length - 2) | date:'MMM yyyy' }} <strong>to</strong>
  {{ data.InfoDetails[0].ToDt == null && 'current' || data.InfoDetails[0].ToDt.substring(6, data.InfoDetails[0].ToDt.length - 2) | date:'MMM yyyy'}}

</li>

显示(按预期):

E1 -- From Nov 2011 to current
A1 -- From Jun 2010 to Nov 2011
X1 -- From Apr 2009 to Jun 2010
Z1 -- From Sep 2003 to Jun 2004 

我可以将此数据过滤为仅包含少于3年的项目(从当前年度开始)。

我的JS:

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';

  $scope.myData = {

    "Entries": [{
        "EntryNumber": "E1",
        "InfoDetails": [{
          "FromDt": "/Date(1320912000000)/",
          "ToDt": null,
          "RegisteredAs": {
            "SurName": "test",
            "Title": "MRS"
          },
          "RegisteredWith": "test"
        }]
      }, {
        "EntryNumber": "A1",
        "InfoDetails": [{
          "FromDt": "/Date(1276153200000)/",
          "ToDt": "/Date(1320912000000)/",
          "RegisteredAs": {
            "SurName": "test",
            "Title": "MR"
          },
          "RegisteredWith": "test"
        }]
      }, {
        "EntryNumber": "X1",
        "InfoDetails": [{
          "FromDt": "/Date(1239346800000)/",
          "ToDt": "/Date(1276153200000)/",
          "RegisteredAs": {
            "SurName": "test",
            "Title": "MR"
          },
          "RegisteredWith": "test"
        }]
      }, {
        "EntryNumber": "Z1",
        "InfoDetails": [{
          "FromDt": "/Date(1063177200000)/",
          "ToDt": "/Date(1086850800000)/",
          "RegisteredAs": {
            "SurName": "test",
            "Title": "MR"
          },
          "RegisteredWith": "test"
        }]
      }

    ]
  }

});

Heres a plunker:http://plnkr.co/edit/xscddt6AlhxUYIVIklQy?p=preview

1 个答案:

答案 0 :(得分:3)

分叉你的plnkr

app.filter('filterList', function() {
    return function(items) {
        var retn = [];

        angular.forEach(items, function(item){
            if((new Date().getFullYear()) - (new Date(+item.InfoDetails[0].FromDt.substring(6, item.InfoDetails[0].FromDt.length - 2)).getFullYear()) >= 3){
              retn.push(item); 
            }
        });

        console.log(retn);
        // return items.slice().reverse();
        return retn;
    };
});

希望这会有所帮助