0

所以我有一个使用 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。

角度可以做到这一点“开箱即用”还是需要自定义过滤器,如果是这样,有什么指针吗?

4

1 回答 1

0

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

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

具体而言,表达式参数具有:

函数:谓词函数可用于编写任意过滤器。为数组的每个元素调用该函数。最终结果是谓词返回 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.
};
于 2013-10-07T15:25:24.607 回答