筛选日期不适用于angularjs

筛选日期不适用于angularjs,angularjs,angularjs-ng-repeat,angularjs-filter,Angularjs,Angularjs Ng Repeat,Angularjs Filter,给定要筛选的数据: $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.getMinu

给定要筛选的数据:

$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) }
  ];
使用搜索输入框过滤除日期字段外的任何字段

比如说

Search : John
Name    Phone Number    Age Some_Random_Date_Time

John    555-1212    10  2014-08-27 20:24:40 540
然后搜索字符串2014,该字符串是的一部分,如图所示,返回的结果为空

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

日期搜索过滤器实际上工作正常。问题在于你的数据。过滤器对绑定到它的数据起作用。在您的示例中,仅显示器使用日期格式过滤器以特定格式显示日期。如果您使用搜索过滤器,它将在迭代的列表上工作(记住日期格式过滤器不会更新基础模型),因此可以创建一个自定义过滤器,该过滤器可以以格式化程序的方式处理日期。但在您的情况下,因为您需要显示格式化的日期,所以我只需要在模型本身中格式化日期

  //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>
{{friend.formattedDate}

这是因为在实际数据中,日期不是那种格式。您只是显示基于日期格式的过滤器,它不会修改基础data@PSL:如果我需要根据输出窗口上显示的内容进行搜索,我该怎么做?是否编写自定义筛选器?是的,或者在friend对象中添加一个属性以显示格式化的日期..,这样更合适。这里有一个ES3友好的变体。。。这与PSLs答案完全相同