使用 daterange 根据开始和结束日期过滤 AngularJS 项?

Filtering AngularJS items based on start and end date using daterange?

大家好,我想使用 meanjs 应用程序中的 daterange 功能过滤 enquiry_received_date 的项目(从和到日期)。然后我尝试了很多方法但无法得到解决方案如果有人知道解决方案请帮助我..... my plunk

控制器:

.filter('dateRange', function() {
    return function(records, from, to) {
        return records.filter(function(record) {
            return record.Date >= from && record.Date <= to;
        });
    }
})

Html:

<td> {{data.buyer_name}}</td>
   <td> {{data.ex_india_date}}</td>
      <td> {{data.quantity}}</td>
        <td> {{data.enquiry_received_date}}</td>

My plunk

首先,您的记录似乎没有像Date这样的字段,所以您的过滤不起作用。我看到您正在显示 enquiry_received_date,所以我想这是您要用于过滤的字段。该字段包含格式为 YYYY-MM-DD 的日期,因此您需要将其解析为日期。我建议为此使用 MomentJS - 这个库使处理日期对象变得非常容易。

这是可用于实现此目的的代码:

控制器

.filter('dateRange', function() {
        return function(records, from, to) {
            return records.filter(function(record) {
                return !moment(record.enquiry_received_date, 'YYYY-MM-DD').isBefore(moment(from))
                && !moment(record.enquiry_received_date, 'YYYY-MM-DD').isAfter(moment(to));
            });
        }

查看

鉴于我刚刚添加了对 moment.js 的引用。

工作的 Plunker

http://plnkr.co/edit/gEPtj9yk1AxgEZiNeqY0?p=preview


编辑

如果你想让你的过滤器更可重用,你可以添加另一个参数,其中包含应该用于过滤的字段名称:

控制器

.filter('dateRange', function() {
        return function(records, dateKey, from, to) {
            return records.filter(function(record) {
                return !moment(record[dateKey], 'YYYY-MM-DD').isBefore(moment(from))
                && !moment(record[dateKey], 'YYYY-MM-DD').isAfter(moment(to));
            });
        }

查看

<tr ng-repeat="data in  record | dateRange : 'enquiry_received_date' : from : to">
    <td> {{data.buyer_name}}</td>
    <td> {{data.ex_india_date}}</td>
    <td> {{data.quantity}}</td>
    <td> {{data.enquiry_received_date}}</td>
</tr>

笨蛋

http://plnkr.co/edit/pczikllV7vBTVoFfcpvK?p=preview