说我有以下观点:
<tr ng-repeat="user in users" >
<td>{{$index + 1}}</td>
<td>{{user.id}}</td>
<td>{{user.pageViews}}</td>
<td>{{user.urls}}</td>
</tr>
我可以静态应用这样的多个过滤器:
<tr ng-repeat="user in users | filter:idFilter | filter:pageViewFilter | filter:urlsFilter">
如何动态应用0到N个过滤器到ng-repeat的任何地方?
答案 0 :(得分:4)
您可以通过$ filter访问控制器中的过滤器。这是演示: http://jsfiddle.net/EGVwG/6/
<ul ng-repeat="num in getData()" >
<li>{{num.val}}</li>
</ul>
$scope.getData = function() {
var finalData = $scope.arrVal;
if($scope.bFilterEnabled)
finalData = $filter('filter')(finalData, $scope.searchText);
if($scope.bSortEnabled)
finalData = $filter('orderBy')(finalData, 'val');
return finalData;
}
答案 1 :(得分:1)
如何应用所有过滤器,但其中一些“什么都不做”(pass-all条件)。 或者,您可以创建另一个自定义过滤器来链接结果。