我试图以毫秒的格式过滤使用包含来自服务器的日期对象的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
感谢您的任何建议!
答案 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