AngularJS DateRange - 如何包含结束日期
AngularJS DateRange - how to include the end date
我在 angular 数据集上使用数据范围过滤器,但它不是 'including' 结束日期。我必须从日期选择器开始 select +1 天才能正常工作。开始日期工作正常。
此代码仅为示例而非生产...
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>
范围/控制器
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
}]
});
我认为您没有正确传递 "to" 参数。
正如官方文档所述(https://docs.angularjs.org/api/ng/filter/filter),每个过滤器的 returning 函数接受 3 个参数,如下所示:
return 函数(数组、表达式、比较器){...}
要同时传递 "from" 和 "to" 参数,您应该使用对象将它们传递给函数:
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;
};
});
我在 angular 数据集上使用数据范围过滤器,但它不是 'including' 结束日期。我必须从日期选择器开始 select +1 天才能正常工作。开始日期工作正常。
此代码仅为示例而非生产...
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>
范围/控制器
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
}]
});
我认为您没有正确传递 "to" 参数。 正如官方文档所述(https://docs.angularjs.org/api/ng/filter/filter),每个过滤器的 returning 函数接受 3 个参数,如下所示: return 函数(数组、表达式、比较器){...} 要同时传递 "from" 和 "to" 参数,您应该使用对象将它们传递给函数:
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;
};
});