按天数过滤ng-repeat

时间:2013-10-07 15:09:59

标签: javascript date angularjs filter

所以我有一个用ng-repeat创建的简单列表,其中包含一个文本过滤器 以及一个带有数字的下拉菜单,它应该显示列表元素 从那段时间开始(比如说最近10天):

<input type="text" ng-model="filter.search" />
<select ng-model="filter.days">
   <option value="1">1</option>
   ...
   <option value="30">30</option>
</select>

<ul>
   <li ng-repeat="notice in notices | filter: filter.search">
   ...
   {{notice.modified.date | date:'dd.MM.yyyy'}}</li>
   ...
</li>
</ul>

但我不确定如何将<select>过滤器应用于ng-repeat。

  

角度可以“开箱即用”,还是需要定制   过滤器,如果有,那些指针?

1 个答案:

答案 0 :(得分:0)

'filter'过滤器支持将函数作为任意谓词传递。

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

具体来说,表达式参数有:

function:谓词函数可用于写入任意过滤器。为数组的每个元素调用该函数。最终结果是谓词返回true的那些元素的数组。

所以你可以做这样的事情

<li ng-repeat="notice in notices | filter: filter.search | filter:withinDays">

$scope.withinDays = function(item) {
    // Use $scope.filter.days + notice.modified.date to do day comparison, and return true/false.
};
相关问题