javascript - 自定义 ng-filter 用于匹配范围内的日期值

标签 javascript angularjs datetime

我正在尝试创建一个过滤器,用于过滤 ng-repeat 中的项目的日期。例如,在 div 标题“今天”中,仅显示在每个项目日期属性中设置了今天日期的项目。我希望最终在标记中得到这样的结果:

<li class="{{todo.category}}" ng-repeat="todo in todos | taskDate : today">
    {{todo.title}}
</li>

待办事项结构示例: (日期是通过 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 
,但我根本不知道如何扩展它以显示明天等。

编辑:设法让过滤器适用于今天,但不适用于其他日期

最佳答案

我认为你可以使用 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;
        }
    }
}

Example Fiddle

关于javascript - 自定义 ng-filter 用于匹配范围内的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508400/

相关文章:

javascript - 我无法使用 Javascript 中的 getElementsByClassName 方法访问 <div> 标记

javascript - angularjs 在请求前检查数据

Python绘图y轴平均标签不会显示并且日期都很拥挤

javascript - 连接两个 slider 以提供其他值

javascript - 按降序对 Javascript 关联数组值进行排序

javascript - Angular JS : Cannot read property 'then' of undefined

javascript - ng-click 重置按钮仅有效一次

Python - 如何通过仅保留最新的元组来对元组列表进行重复数据删除。

java - 覆盖 Java 定时器

java - 所有数据类型都是对象的特定类型吗?