我正在尝试创建一个过滤器,用于过滤ng-repeat中的项目以查找其日期。例如,在div标题"今天"仅显示在每个项目日期属性中设置今天日期的项目。我希望在标记中得到类似的结果:
<li class="{{todo.category}}" ng-repeat="todo in todos | taskDate : today">
{{todo.title}}
</li>
todo结构示例: (日期是通过AngularUI引导程序指令生成的,因此不是100%格式化它们。)
$scope.todos = [
{name : 'Complete 5 tasks',
category: 'Life',
date: ''}
]
目前我的方法和过滤器在这里:
Date.prototype.sameDay = function(d) {
return this.getFullYear() === d.getFullYear() && this.getDate() === d.getDate() && this.getMonth() === d.getMonth();
};
app.filter("taskDate", function() {
return function(input, date) {
var todaysDate = new Date();
var filtered = [];
angular.forEach(input, function(todo, index) {
if (todo.date instanceof Date) {
if (todo.date.sameDay(todaysDate)) {
filtered.push(todo);
}
} else if (todo.date == date) {
// filtered.push(todo);
}
});
return filtered;
};
});
当我使用以下过滤器
|taskDate时,这适用于显示具有今天日期的项目,但我无法弄清楚如何扩展它以显示明天等等。
编辑:设法让过滤器适用于今天,但不是其他日期
答案 0 :(得分:1)
我认为你可以使用Angular的原生过滤器来帮助:
<li class="{{todo.category}}" ng-repeat="todo in todos | filter:todoFilter('today')">
$scope.todoFilter= function(date) {
return function(todo) {
if(date==='today' && todo.date=== $scope.todaysDate)){
return true;
}
}
}