如何在angular.js中动态应用自定义过滤器?

时间:2016-05-16 23:58:28

标签: javascript angularjs filter

我知道在角度方面,使用ng-repeat应用自定义过滤器将如下所示:

ng-repeat="request in allRequests | allRequests"

但是我有几个不同的过滤器。例如

 allFutureRequests, allPastRequests, myPastRequests, group1FutureRequests

我希望换掉所有请求'过滤并动态地将其替换为任何其他过滤器,具体取决于用户点击的某些按钮的内容。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

最简单的方法是在控制器中执行此操作。 This question总结得非常好。

它的工作格式为$filter('filtername')(argument)

如果您想在按钮点击时添加过滤器,请执行以下操作:

$scope.onBtnClick = function(index) {
    $scope.allRequests[index] = $filter('allFutureRequests')($scope.allRequests[index]);
}

您可以通过以下点击来调用它:

<button ng-repeat="request in allRequests | allRequests" ng-click="onBtnClick($index)">

上面只是将allRequests数组/对象的索引传递给函数。然后,该函数将该过滤器应用于其中的特定索引。

另外,不要忘记将$filter注入您的控制器。

WORKING EXAMPLE