在AngularJS中动态应用0个或更多ng重复滤波器?

时间:2013-01-24 00:08:30

标签: angularjs

说我有以下观点:

<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的任何地方?

2 个答案:

答案 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条件)。 或者,您可以创建另一个自定义过滤器来链接结果。