我有一个过滤器,它只需要返回数据数组中的当前日期:
app.filter('currentDates', function() {
return function(eventdata) {
var data_date, filtered_list, i, today;
filtered_list = [];
i = 0;
while (i < eventdata.length) {
today = Date.now();
data_date = eventdata.date;
if (today <= data_date) {
filtered_list.push(data[i]);
}
i++;
}
return filtered_list;
};
});
我正在调用html中的过滤器,如下所示:
<div class="event" ng-repeat="data in eventdata | currentDates"></div>
我无法弄清楚为什么没有归还。任何帮助赞赏。这是plunkr http://plnkr.co/edit/5aT4CF?p=preview。如果删除过滤器,则会填充数据。
答案 0 :(得分:1)
正如评论中所解释的那样,您正在将Date类型与字符串进行比较。您需要对该字符串执行类型转换。
我还使用了for loop
而不是while loop
来节省几行空间。
您的过滤器功能应该如下所示
app.filter('currentDates', function() {
return function(eventdata) {
var filtered_list = [];
for (var i = 0; i < eventdata.length; i++) {
var today = Date.now();
var data_date = new Date(eventdata[i].date).getTime();
if (today <= data_date) {
filtered_list.push(eventdata[i]);
}
}
return filtered_list;
};
});
这是更新的plunkr
答案 1 :(得分:1)
试试这个
while (i < eventdata.length) {
today = Date.now();
data_date = new Date(eventdata[i].date);
if (today <= data_date) {
filtered_list.push(eventdata[i]);
}
i++;
}
的 PLUNKR 强>