【发布时间】:2015-04-12 15:21:31
【问题描述】:
我是 Angular js 的新手,正在尝试使用自定义过滤器在 Angular js 中过滤嵌套的 json 数据(基本上我想根据用户输入显示过去几天的日期)。基本上我正在尝试使用自定义过滤器过滤 json 中的日期对象。我不确定我们是否可以使用我当前的代码过滤嵌套对象(如日期对象),或者我可能需要更改我当前的实现。
当日期是字符串格式并且它工作正常之前,我让它像这样工作 http://plnkr.co/edit/5IhJYSXvqa5nwd87y8kD?p=preview
但是当我尝试嵌套 json 日期格式时它不起作用或其他 json 格式的读数我无法使它工作。我正在尝试找出一种使用自定义过滤器过滤嵌套 json 对象(数据中的日期或其他参数)的方法。任何帮助将不胜感激。 这是一个 plunker 链接 http://plnkr.co/edit/en36loBKQ2DAnOcbwe8v?p=preview`
var app = angular.module('tempfilter', []);
app.controller('MainCtrl', function($scope) {
$scope.sensordata = [{
id: 'id:1',
name: 'Rob',
"ValidationDate": {
"$date": "2015-02-20 18:00:05-0400"
},
"Temp": 42
app.filter('tempo', function() {
return function(items, field, value) {
var filtered = [];
var newdate = new Date().setDate(new Date().getDate() - value);
angular.forEach(items, function(item) {
if (new Date(item[field]) > newdate) {
filtered.push(item);
}
});
return filtered;
};
});
<body ng-controller="MainCtrl">
Number of days before today
<input type="number" ng-model="filter.value">
<p id="demo">Showing data for last {{ filter.value }} days</p>
Filtered list:
<ul>
<li ng-repeat="s in sensordata | tempo:'ValidationDate.$date':filter.value">{{s.id}} {{s.ValidationDate.$date|date}} {{s.name}} {{s.Temp}}
</ul>
</body>
`
【问题讨论】:
标签: javascript json angularjs angularjs-ng-repeat angularjs-filter