ng-repeat 按日期范围过滤数据 [英] ng-repeat filtering data by date range
本文介绍了ng-repeat 按日期范围过滤数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试通过输入日期范围来过滤包含时间戳的列表
例如:
html
<div ng-controller="MyController"><表格><tr><td>来自:<input ng-model="query.date1" type="text" placeholder=""/></td><td>致:<input ng-model="query.date2" type="text" placeholder=""/></td></tr><tr ng-repeat="order in order |filter:query"><td>{{order.date1 * 1000 |日期:'dd-MM-yyyy'}}</td><td>{{order.date2 * 1000 |日期:'dd-MM-yyyy'}}</td></tr>
javascript
var nameSpace = angular.module('tst',[]);nameSpace.controller('MyController', function MyController($scope) {$scope.orders = [{"date1":"1306487800",日期2":1406587800"},{"date1":"1196487800",日期2":1406597800"}]});
我希望能够用值填充发件人"字段:27-05-2010
和To"字段的值:29-07-2015
并仅获取此范围内的记录.
(示例中的第一条记录).
感谢分配阿维
解决方案
您可以创建自定义过滤器来实现此目标.
html
<input ng-model="dateTo" type="text"/><tr ng-repeat="按订单排序 | myfilter:dateFrom:dateTo"><td>{{order.date1 * 1000 |日期:'dd-MM-yyyy'}}</td><td>{{order.date2 * 1000 |日期:'dd-MM-yyyy'}}</td></tr>
javascript
function parseDate(input) {var 部分 = input.split('-');返回新日期(parts[2],parts[1]-1,parts[0]);}nameSpace.filter("myfilter", function() {返回函数(项目,从,到){var df = parseDate(from);var dt = parseDate(to);var 结果 = [];for (var i=0; i
此外,我将时间戳数据类型从字符串更改为数字.
$scope.orders = [{日期1":1306487800,日期2":1406587800},{日期1":1196487800,日期2":1406597800}]
I'm trying to filter a list that contains a timestamp by typing a range of dates
for example:
html
<div ng-app="tst">
<div ng-controller="MyController">
<table>
<tr>
<td>From:
<input ng-model="query.date1" type="text" placeholder="" />
</td>
<td>To:
<input ng-model="query.date2" type="text" placeholder="" />
</td>
</tr>
<tr ng-repeat="order in orders |filter:query">
<td>{{order.date1 * 1000 | date:'dd-MM-yyyy'}}</td>
<td>{{order.date2 * 1000 | date:'dd-MM-yyyy'}}</td>
</tr>
</table>
</div>
</div>
javascript
var nameSpace = angular.module('tst',[]);
nameSpace.controller('MyController', function MyController($scope) {
$scope.orders = [
{
"date1":"1306487800",
"date2":"1406587800"
},
{
"date1":"1196487800",
"date2":"1406597800"
}]
});
i want to be able to fill the "From" field with the value : 27-05-2010
and the "To" field the value of : 29-07-2015
and get only the records that are in this range.
(the first record in the example).
Thanks allot Avi
解决方案
You can create a custom filter to achieve this aim.
html
<input ng-model="dateFrom" type="text"/>
<input ng-model="dateTo" type="text"/>
<tr ng-repeat="order in orders | myfilter:dateFrom:dateTo">
<td>{{order.date1 * 1000 | date:'dd-MM-yyyy'}}</td>
<td>{{order.date2 * 1000 | date:'dd-MM-yyyy'}}</td>
</tr>
javascript
function parseDate(input) {
var parts = input.split('-');
return new Date(parts[2], parts[1]-1, parts[0]);
}
nameSpace.filter("myfilter", function() {
return function(items, from, to) {
var df = parseDate(from);
var dt = parseDate(to);
var result = [];
for (var i=0; i<items.length; i++){
var tf = new Date(items[i].date1 * 1000),
tt = new Date(items[i].date2 * 1000);
if (tf > df && tt < dt) {
result.push(items[i]);
}
}
return result;
};
});
also, i changed the timestamp data type from string to numbres.
$scope.orders = [
{
"date1": 1306487800,
"date2": 1406587800
},
{
"date1": 1196487800,
"date2": 1406597800
}]
这篇关于ng-repeat 按日期范围过滤数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文