角度搜索日期显示为' medium'但作为yyyy-MM-ddTHH:mm:ssZ返回JSON

时间:2015-04-16 11:26:53

标签: json angularjs date

我希望有人能帮助我在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

有没有人知道什么是获得我想要的结果的最佳方法?任何帮助将不胜感激。

1 个答案:

答案 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>