AngularJS按日期筛选帖子,今天不显示';日期
我有一个网站上我正在建设的事件列表,我想过去的事件被自动删除。我已经写了一个过滤器来做这个,除了它也删除今天的事件。我试着用角力矩。这是我的密码:AngularJS按日期筛选帖子,今天不显示';日期,angularjs,date,filter,momentjs,Angularjs,Date,Filter,Momentjs,我有一个网站上我正在建设的事件列表,我想过去的事件被自动删除。我已经写了一个过滤器来做这个,除了它也删除今天的事件。我试着用角力矩。这是我的密码: angular.module('zenCityApp') .filter('filterPastDates', function (moment) { return function (events) { var filterByDate = []; for (var i = 0; i < events.le
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;
};
});
angular.module('zenCityApp')
.filter('FilterPostDates',函数(时刻){
返回函数(事件){
变量filterByDate=[];
对于(var i=0;i
以下是标记:
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>
div ng repeat=“事件中的事件| limito:100 |过滤器:tfilter | orderBy:'date'|过滤器最新日期”>
{{event.date | amDateFormat:'MMMM Do'}
{{event.name}
任何帮助都将不胜感激 更好的方法是创建一个要测试的截止时间
时刻。通过使用.startOf('day')
,矩api为您提供了一种非常简单的方法。这将给你一个时刻
,代表今天的12:00am(一天中的第一秒)。但是,由于您还希望在过滤器中包含该值,因此可以从该值中减去1毫秒
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;
}
};
});
app.filter('filterPostDates',函数(){
返回函数(事件){
if(events&&events.length){
var筛选=[];
var cutOffDate=moment().startOf('day')。减去(1,'毫秒');
对于(var i=0;i
下面是一个示例:我认为您只需要将“小时”更改为“天”,但您确实应该只声明一次currentDate