我希望有人能帮助我在ng-repeat中过滤日期。
在网站上,我使用的是一个文本字段,用于搜索从JSON返回的信息,并显示与搜索匹配的结果。 但是在表格中我将日期显示为中等格式,因此显示例如“2015年4月16日上午11:36:25”,但要查找与此日期匹配的结果,我必须输入“2015-04- 16“在文本字段中,因为JSON中日期的值是”2015-04-16T10:36:25Z“。
我想要成为的是搜索工作显示所有结果,例如4月16日,当有人在字段中键入“Apr 16”,因为它在表格中显示“Apr 16”。
我有这个数据的例子,这是一个简单的例子,只显示重要的内容。
<tr id="usersData" ng-repeat="user in users.data | filter:usersSearchText">
<td>{{user.createdDate | date:'medium'}}</td>
</tr>
我知道JSON对象可以添加不同的日期格式,但这对我来说不是一个选项。
在此示例中,我有用户的名称和创建日期,我想使用搜索字段同时搜索名称和创建日期,但是显示日期为“中”格式。不是它提供的方式。 http://plnkr.co/edit/Ssq4xeBHpNPrRgAbLVZs?p=preview
有没有人知道什么是获得我想要的结果的最佳方法?任何帮助将不胜感激。
答案 0 :(得分:1)
也许是自定义数组过滤器......
.filter('SearchContains', ['$filter', function($filter) {
return function (items, search) {
if(typeof(search) == 'undefined') {return items;}
var filtered = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
if ($filter('date')(item.createdDate, 'medium').indexOf(search) > -1 || item.name.indexOf(search) > -1) {
filtered.push(item);
}
}
return filtered;
};
}])
用这个:
<table id="searchTextResults">
<tr><th>Name</th><th>Phone</th><th>Created Date</th></tr>
<tr ng-repeat="user in users | SearchContains:searchText">
<td>{{user.name}}</td>
<td>{{user.phone}}</td>
<td>{{user.createdDate | date:'medium'}}</td>
</tr>
</table>