仅显示ng-repeat中今天的事件

时间:2014-10-03 16:35:58

标签: angularjs filter firebase momentjs

我试图打印出仅安排在"今天"在ng-repeat中。我有一个部分显示所有事件,目前效果很好。这是代码:

<div ng-controller="mainCtrl">


          <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>

使用filterPastDates过滤器,删除已传递的事件。我使用下面的方法来解决我今天的事件被删除的问题:

angular.module('zenCityApp')
.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;
    }
  };
});

我试图制作一个仅显示今天活动的部分,但我无法让它发挥作用。这是html(现在我只是试图让它打印出日期):

<div class="col-md-6">
        <div class="row">
        <h2>Today's Events</h2>
      </div>
      <div class="row">
        <div ng-controller="mainCtrl">
          <div ng-repeat "event in events | orderBy: 'date' | eventDateFilter">
            <h4>{{event.date | amDateFormat:'MMMM Do'}}</h4>
          </div>

        </div>
      </div>
      </div>

这是我尝试使用的过滤器,基于我上面使用的过滤器:

      angular.module('zenCityApp')
.filter('eventDateFilter', function () {
  return function (events) {
    if (events && events.length) {
      var eventsToday = [];
      var startOfDay = moment().startOf('day').subtract(1, 'millisecond');
      var endOfDay = moment().endOf('day');
      for (var i = 0; i < events.length; i++) {
        var evt = events[i];
        if (startOfDay <= evt.date <= endOfDay) {
          eventsToday.push(evt);
        }
      }
      return eventsToday;
    }
  };
});

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您不能对不等式检查进行链接:startOfDay <= evt.date <= endOfDay不是相关的布尔检查:它实际上是有效的,但相当于(startOfDay <= evt.date) <= endOfDay(true | false) <= endOfDay,对于所有意图和目的而言,总是如此。

只需进行一次双重检查:if (startOfDay.isBefore(evt.date) && evt.date.isBefore(endOfDay)) ...应该为您提供所需的答案。