Angular JS Filter日期

时间:2015-03-24 22:14:10

标签: angularjs angularjs-ng-repeat angularjs-filter

我想知道是否有人可以帮助我在ng-repeat中过滤日期 我有一个文本字段,我输入搜索文本以过滤表格中的结果

采取这个减少的例子`

 <tr id="credentialsData" ng-repeat="credential in credentials.data | filter:credentialsSearchText">
      <td>{{credential.createdDate | date:'medium'}}</td>
 </tr>`

credential.createdDate以2015-03-24T21:19:49Z格式返回其余调用

当我附上中期日期过滤器时 - 显示为2015年3月24日下午9:19:49

然而,当我在String Mar或9上搜索时,我没有得到任何结果。 Angularjs搜索基础对象并忽略过滤器。 我已经在网上阅读了其他选项,其中有人建议在json对象中添加不同的日期格式,但不幸的是,这不是我的选择

对此有任何帮助将不胜感激

干杯 达明

1 个答案:

答案 0 :(得分:1)

您可以使用自定义功能进行过滤。

https://docs.angularjs.org/api/ng/filter/filter

 <tr id="credentialsData" ng-repeat="credential in credentials.data | filter:credentialsSearchText:compareCredentialDate">
      <td>{{credential.createdDate | date:'medium'}}</td>
 </tr>

在您的控制器中,输入

$scope.compareCredentialDate = function(credential, expected) {
  // you have to inject '$filter' to use this:
  var dateFilter = $filter('date');

  // this is the value that "credential.createdDate | date:'medium'"
  // evaluates to:
  var formattedDateString = dateFilter(credential.createdDate, 'medium');

  // hypothetical matching method - you can implement whatever you
  // want here:    
  var isMatch = formattedDateString.indexOf(expected) >= 0;

  return isMatch;
}