1

假设我有以下观点:

<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?

4

2 回答 2

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;
}
于 2013-01-24T05:28:44.983 回答
1

如何应用所有过滤器,但其中一些“什么都不做”(通过所有条件)。或者,您可以创建另一个自定义过滤器来链接结果。

于 2013-01-24T00:25:44.317 回答