AngularJS DATERANGE - 如何将结束日期 [英] AngularJS DateRange - how to include the end date
问题描述
我使用的角度数据集的数据范围过滤器,但它是不是包括结束日期。我必须从日期选择器选择1天它才能正常工作。起始日期是工作的罚款。
这code为例子,而不是只生产...
JAVASCRIPT
//解析在DD-MM-yyyy格式的日期
功能parseDate(输入){
变种份= input.split(' - ');
返回新日期(份[2],份[1] -1,份[0]);
}nameSpace.filter(rangeFilter功能(){
返回功能(物品,从,到){
变种DF = parseDate(从);
VAR DT = parseDate(地);
变种arrayToReturn = [];
对于(VAR I = 0; I< items.length;我++){
变种TF =新的日期(项目[I] .date1 * 1000);
如果(TF> = DF&放大器;&安培; TF< DT){
arrayToReturn.push(项目[I]);
}
} 返回arrayToReturn;
};
});
HTML
来源:<输入NG模型=datef类型=文本占位符=/>
要:其中,输入NG模型=datet类型=文本占位符=/>< TR NG重复=为了订单| rangeFilter:datef:datet>
< TD> {{order.date1 * 1000 |日期:'DD-MM-YYYY'}}< / TD>
< / TR>
SCOPE /控制器
nameSpace.controller('myController的',功能myController的($范围){
$ scope.datef =27-05-2010
$ scope.datet =29-07-2015;
$ scope.orders = [
{
日期1:1306281600
},
{
日期1:1196467200
},
{
日期1:1406505600
},
{
日期1:1406592000
}]
});
我觉得你没有正确地传递到参数。
作为官方文件说,( https://docs.angularjs.org/api/ng/filter /过滤器),每个滤波器的返回函数接受3 PARAMS是这样的:
返回功能(数组,前pression,比较器){...}
这两个,从通和到的参数,你应该将它们使用一个对象传递给函数:
HTML
来源:<输入NG模型=datef类型=文本占位符=/>
要:其中,输入NG模型=datet类型=文本占位符=/>< TR NG重复=为了订单| rangeFilterr:{来源:datef到:datet}>
< TD> {{order.date1 * 1000 |日期:'DD-MM-YYYY'}}< / TD>
< / TR>
JAVASCRIPT
//解析在DD-MM-yyyy格式的日期
功能parseDate(输入){
变种份= input.split(' - ');
返回新日期(份[2],份[1] -1,份[0]);
}nameSpace.filter(rangeFilter功能(){
返回功能(项目的obj){
变种DF = parseDate(obj.from);
VAR DT = parseDate(obj.to);
变种arrayToReturn = [];
对于(VAR I = 0; I< items.length;我++){
变种TF =新的日期(项目[I] .date1 * 1000);
如果(TF> = DF&放大器;&安培; TF< DT){
arrayToReturn.push(项目[I]);
}
} 返回arrayToReturn;
};
});
I'm using a data range filter on an angular dataset, however it is not 'including' the end date. I have to select +1 day from the date picker for it to work properly. The start date is working fine.
This code is example only and not production...
JAVASCRIPT
// parse a date in dd-mm-yyyy format
function parseDate(input) {
var parts = input.split('-');
return new Date(parts[2], parts[1]-1, parts[0]);
}
nameSpace.filter("rangeFilter", function() {
return function(items, from, to) {
var df = parseDate(from);
var dt = parseDate(to);
var arrayToReturn = [];
for (var i=0; i<items.length; i++){
var tf = new Date(items[i].date1 * 1000);
if (tf >= df && tf < dt) {
arrayToReturn.push(items[i]);
}
}
return arrayToReturn;
};
});
HTML
From:<input ng-model="datef" type="text" placeholder="" />
To:<input ng-model="datet" type="text" placeholder="" />
<tr ng-repeat="order in orders | rangeFilter:datef:datet">
<td>{{order.date1 * 1000 | date:'dd-MM-yyyy'}}</td>
</tr>
SCOPE / CONTROLLER
nameSpace.controller('MyController', function MyController($scope) {
$scope.datef = "27-05-2010"
$scope.datet = "29-07-2015";
$scope.orders = [
{
"date1": 1306281600
},
{
"date1": 1196467200
},
{
"date1": 1406505600
},
{
"date1": 1406592000
}]
});
I think you're not passing the "to" parameter correctly. As the official Documentation says(https://docs.angularjs.org/api/ng/filter/filter), the returning function of each filter accept 3 params like this: return function(array, expression, comparator){...} To pass both "from" and "to" parameters, you should pass them to the function using an object:
HTML
From:<input ng-model="datef" type="text" placeholder="" />
To:<input ng-model="datet" type="text" placeholder="" />
<tr ng-repeat="order in orders | rangeFilterr:{from: datef, to: datet}">
<td>{{order.date1 * 1000 | date:'dd-MM-yyyy'}}</td>
</tr>
JAVASCRIPT
// parse a date in dd-mm-yyyy format
function parseDate(input) {
var parts = input.split('-');
return new Date(parts[2], parts[1]-1, parts[0]);
}
nameSpace.filter("rangeFilter", function() {
return function(items, obj) {
var df = parseDate(obj.from);
var dt = parseDate(obj.to);
var arrayToReturn = [];
for (var i=0; i<items.length; i++){
var tf = new Date(items[i].date1 * 1000);
if (tf >= df && tf < dt) {
arrayToReturn.push(items[i]);
}
}
return arrayToReturn;
};
});
这篇关于AngularJS DATERANGE - 如何将结束日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!