我试图打印出仅安排在"今天"在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;
}
};
});
非常感谢任何帮助!
答案 0 :(得分:0)
您不能对不等式检查进行链接:startOfDay <= evt.date <= endOfDay
不是相关的布尔检查:它实际上是有效的,但相当于(startOfDay <= evt.date) <= endOfDay
或(true | false) <= endOfDay
,对于所有意图和目的而言,总是如此。
只需进行一次双重检查:if (startOfDay.isBefore(evt.date) && evt.date.isBefore(endOfDay)) ...
应该为您提供所需的答案。