鉴于要过滤的数据:
$scope.friends = [
{ "name": 'John', "phone": '555-1212', "age": 10, "name-phone-age":now.setMinutes(now.getMinutes() + 30) },
{ "name": 'Mary', "phone": '555-9876', "age": 19, "name-phone-age":now.setMinutes(now.getMinutes() + 30) },
{ "name": 'Mike', "phone": '555-4321', "age": 21, "name-phone-age":now.setMinutes(now.getMinutes() + 30) },
{ "name": 'Adam', "phone": '555-5678', "age": 35, "name-phone-age":now.setMinutes(now.getMinutes() + 30) },
{ "name": 'Julie', "phone": '555-8765', "age": 29, "name-phone-age":now.setMinutes(now.getMinutes() + 30) }
];
使用搜索输入框对任何字段进行过滤,但DATE字段除外;
例如
Search : John
Name Phone Number Age Some_Random_Date_Time
John 555-1212 10 2014-08-27 20:24:40 540
并搜索字符串2014,它是output data的一部分,如图所示,返回空结果
Name Phone Number Age Some Random Date Time
John 555-1212 10 2014-08-27 20:24:40 540
Mary 555-9876 19 2014-08-27 20:54:40 540
Mike 555-4321 21 2014-08-27 21:24:40 540
Adam 555-5678 35 2014-08-27 21:54:40 540
Julie 555-8765 29 2014-08-27 22:24:40 540
Search : 2014
Name Phone Number Age Some_Random_Date_Time
答案 0 :(得分:2)
日期搜索过滤器实际上运行正常。问题在于您的数据。过滤器处理绑定到它的数据。在您的示例中,只有您的显示器使用日期格式过滤器以特定格式显示日期。如果您使用搜索过滤器,它将在迭代的列表上工作(并记住日期格式过滤器不更新基础模型),因此要么创建一个可以格式化方式处理日期的自定义过滤器。但是在你的情况下,因为你需要显示格式化的日期,我只需要在模型中格式化日期。
//Add a new property or update the existing property, here i am adding a new one.
//Or just use friends.forEach
angular.forEach(friends, function(friend){
friend.formattedDate = $filter('date')(friend['name-phone-age'],'yyyy-MM-dd HH:mm:ss');
}) ;
$scope.friends = friends;
现在从视图中删除不需要的过滤器,而不是使用此字段。
<td>{{friend.formattedDate}}</td>
<强> Plnkr 强>