1

我有一个简单的NG-重复:AngularJS NG-重复过滤项基于日期值

<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" 
     }] 
     } 

    ] 
    } 

}); 

继承人plunker:http://plnkr.co/edit/xscddt6AlhxUYIVIklQy?p=preview

回答

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; 
    }; 
}); 

希望这将有助于

+0

@dhavlcengg - 感谢,但输出列表处理不当更新? –

+1

我比较过,应该是3岁。如果将其更改为更大的值,则会在输出列表中找到差异。 – dhavalcengg

+0

这可以基于todt吗? –