日期时间范围自定义过滤器不工作
问题描述:
我想按时间范围过滤列表。我使用的是angularjs,bootstrap datetimepicker和moment.js。但是会发生什么是我无法列出数据。如果没有自定义过滤器,我可以显示列表并执行简单的文本过滤器搜索。我添加了与自定义过滤器相关的代码。日期时间范围自定义过滤器不工作
守则控制器过滤
App.controller('ReportController', ['$scope', 'Report','$filter', function($scope, Report,
$filter){
var self = this;
$filter('myfilter')(dateFrom ,dateTo);
App.filter('myfilter', function() {
return function(items, from, to) {
var result = [];
for (var i=0; i<items.length; i++){
var test = new Date(items[i].dateTime.$date);
var month = test.getMonth()+1;
var date = test.getDate();
var year = test.getFullYear();
var hour = test.getHours();
var minute = test.getMinutes();
var second = test.getSeconds();
var newDate = year+"-"+month+"-"+date+""+hour+"-"+minute+"-"+second;
if (newDate > from && newDate < to) {
result.push(items[i]);
}
}
return result;
};
});
}]);
在HTML中
<div ng-show="Sradioption == 'showSearch2'" class='input-group date' id='datetimepicker6'>
<input type='text' ng-model="dateFrom" class="form-control" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<div ng-show="Sradioption == 'showSearch2'" class='input-group date' id='datetimepicker7'>
<input type='text' ng-model="dateTo" class="form-control" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<table class="table table-hover">
<thead>
<tr>
<th>C_Number</th>
<th>Datetime</th>
<th>Reading</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="r in ctrl.reports | filter:search | myfilter:dateFrom:dateTo">
<td>{{r.c_Number}}</td>
<td>{{r.dateTime}}</td>
<td>{{r.reading}}</td>
</tr>
</tbody>
</table>
答
你需要取出过滤掉你的控制器有关,
App.filter('myfilter', function() {
return function(items, from, to) {
var result = [];
for (var i = 0; i < items.length; i++) {
var test = new Date(items[i].dateTime.$date);
var month = test.getMonth() + 1;
var date = test.getDate();
var year = test.getFullYear();
var hour = test.getHours();
var minute = test.getMinutes();
var second = test.getSeconds();
var newDate = year + "-" + month + "-" + date + "" + hour + "-" + minute + "-" + second;
if (newDate > from && newDate < to) {
result.push(items[i]);
}
}
return result;
};
});
你在两个使用过滤器控制器和ng-repeat ....我认为一个就足够了......你在控制台中得到了什么错误? – Hemakumar
我越来越错误:[$ injector:unpr]未知的提供者:myfilterFilterProvider user3844782
你可以创建一个运行过滤器代码的控制器 – Sajeetharan