【问题标题】:AngularJS Filter Posts by Date not showing today's dateAngularJS按日期过滤帖子不显示今天的日期
【发布时间】:2014-11-27 21:53:42
【问题描述】:

我有一个正在构建的网站上的事件列表,我希望自动删除过去的事件。我已经编写了一个过滤器来执行此操作,但它也删除了今天的事件。我正在尝试使用 Angular Moment。这是我的代码:

angular.module('zenCityApp')
  .filter('filterPastDates', function (moment) {
    return function (events) {
      var filterByDate = [];
      for (var i = 0; i < events.length; i++) {

        var currentDate = new Date();



        if(moment(currentDate).isBefore(events[i].date, 'hour')) {
          console.log("we're in!");
          filterByDate.push(events[i]);
          console.log(filterByDate);
        }


      }
      return filterByDate;
    };
  });

这里是标记:

div ng-repeat="event in events | limitTo:100 | filter:tfilter | orderBy: 'date' | filterPastDates">
        <div class="row">
          <div class="col-md-6">
            <h4>{{event.date | amDateFormat:'MMMM Do'}}</h4>
          </div>
          <div class="col-md-6">
            <h4>{{event.name}}</h4>
          </div>
        </div>

任何帮助将不胜感激。

【问题讨论】:

  • 我认为您只需将“小时”更改为“日”,但您真的应该只声明一次 currentDate

标签: angularjs date filter momentjs


【解决方案1】:

最好创建一个要测试的截止点moment。 Moments api 使用.startOf('day') 为您提供了一种非常简单的方法。这将为您提供一个moment,它代表今天凌晨 12:00(当天的第一秒)。但由于您还想在过滤器中包含该值,因此您可以在距离该值 1 毫秒后 subtract

var cutOffDate = moment().startOf('day').subtract(1,'millisecond');

现在您可以轻松地在过滤器中使用它。请注意,我在循环之外创建了该对象(因为它不应该更改),并且我直接将它创建为一个时刻,而不是每次在循环中创建一个新的时刻对象。

app.filter('filterPastDates', function () {
  return function (events) {
    if (events && events.length) {
      var filtered = [];
      var cutOffDate = moment().startOf('day').subtract(1,'millisecond');

      for (var i = 0; i < events.length; i++) {
        var evt = events[i];
        if (cutOffDate.isBefore(evt.date)) {
          filtered.push(evt);
        }
      }

      return filtered;
    } else {
      return events;
    }
  };

});

这是一个示例 plunker:http://plnkr.co/edit/kSXu0Z3J7zoyBMBjoE84?p=preview

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    相关资源
    最近更新 更多