Angularjs 角度日期范围过滤器
我想知道是否有人能帮我。我目前正在尝试让一个日期过滤器在Angular中工作。我可能完全走错了方向,但我只是想问一下 我现在有一个ng repeat循环通过一个对象数组。我的对象有以下字段:title、sentBy和received。接收到的是UTC格式,我的过滤器基本上也采用UTC格式的两个输入作为开始日期和结束日期。然后,过滤器检查收到的日期是否大于或等于开始日期或小于或等于结束日期。我的问题是过滤器的输入是整个对象的输入。我不知道如何访问过滤器中对象的接收字段来进行比较。我试着输入。收到了,但似乎不起作用。这是我的代码示例Angularjs 角度日期范围过滤器,angularjs,angularjs-scope,angular-filters,Angularjs,Angularjs Scope,Angular Filters,我想知道是否有人能帮我。我目前正在尝试让一个日期过滤器在Angular中工作。我可能完全走错了方向,但我只是想问一下 我现在有一个ng repeat循环通过一个对象数组。我的对象有以下字段:title、sentBy和received。接收到的是UTC格式,我的过滤器基本上也采用UTC格式的两个输入作为开始日期和结束日期。然后,过滤器检查收到的日期是否大于或等于开始日期或小于或等于结束日期。我的问题是过滤器的输入是整个对象的输入。我不知道如何访问过滤器中对象的接收字段来进行比较。我试着输入。收到了
.filter('dateRange', function(){
return function(input, startDate, endDate) {
if(input.received >= startDate && input <= endDate){
return input;
}
};
}
正如我所说,我可能会在这方面完全错误,但任何帮助都将不胜感激
编辑:
我的html代码如下所示:
<div ng-repeat="message in messages | dateRange: startDate : endDate " >
试试下面的代码。你需要比较一下时间
.filter('dateRange', function(){
return function(input, startDate, endDate) {
angular.forEach(input, function(obj){
if(obj.received.getTime() >= startDate.getTime() && obj.received.getTime() <= endDate.getTime()) {
return obj;
}
});
};
});
<div ng-bind="messages | dateRange: startDate : endDate " ></div>
or
<div> {{messages | dateRange: startDate : endDate }}</div>
在代码中,过滤器处理的是消息数组,这意味着第一个参数输入是数组,返回类型也必须是数组。看一看 您的代码应该是这样的:
<div ng-repeat="message in messages | dateRange: startDate : endDate" >
您的过滤器是:
.filter('dateRange', function() {
return function(input, startDate, endDate) {
var retArray = [];
angular.forEach(input, function(obj){
var receivedDate = obj.received;
if(receivedDate >= startDate && receivedDate <= endDate) {
retArray.push(obj);
}
});
return retArray;
};
});
以下是一个。请提供更多代码:您应该添加HTML,在其中您将过滤器传递到元素。不幸的是,在尝试访问input.received时,我收到了错误输入。received未定义,可能是我做了一些愚蠢的事情。谢谢你的回复。由于它是一个对象数组,我需要以某种方式获取数组的索引吗?刚刚测试过,我需要数组索引,看起来,现在我需要一些递增或传递索引的方法。我会考虑一下,看看能不能想出一个解决办法。谢谢。巴哈似乎无法弄清楚如何通过过滤器传递数组的适当索引,有什么建议吗?