角度搜索过滤器和日期不起作用

时间:2014-07-10 21:32:56

标签: angularjs date filter angularjs-ng-repeat

我试图以毫秒的格式过滤使用包含来自服务器的日期对象的ng-repeat生成的列表。列表生成正常,我用角度日期格式化它,但当我过滤我假设过滤器正在工作毫秒,而不是文本。在显示控制器或服务中的日期以使过滤器工作之前,我是否需要格式化控制器或服务中的日期,或者有解决方法吗?

HTML:

<!DOCTYPE html>
<html ng-app="dates">

  <head>
    <script data-require="angular.js@*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-controller="DateController">

    <input type="text" class="form-control" placeholder="Search" ng-model="searchText">
    <p>{{dates}}</p>
    <ul ng-repeat="record in records | filter: searchText">
      <li>{{record.activity}}</li>
      <li>{{record.date | date: longDate}}</li>
    </ul>
   </body>
</html>

这是我的javascript:

angular.module('dates', []);

var DateController = function($scope) {
  $scope.records = [{date:1403802879000, activity: "biking"}, {date:1276495200000, activity: "hiking"}, {date:1403802879000, activity: "walking"}, 
  {date:1403802879000, activity: "biking"}, {date:1276495200000, activity: "hiking"}];
}

这是一个掠夺者:http://plnkr.co/byQkzHSTXLHPCdU0pj3o

感谢您的任何建议!

1 个答案:

答案 0 :(得分:2)

是的,你是正确的ng-filter将查看$ scope.records数组,并根据你输入的表达式返回一个新数组(在本例中为searchText)

简单的解决方案,只需将日期转换为$ scope.records中的字符串。

硬解决方案,您可以编写自己的ng-filter模块。 https://docs.angularjs.org/tutorial/step_09 https://github.com/angular/angular.js/blob/master/src/ng/filter/filter.js#L3