我知道在angular中,应用带有ng-repeat的自定义过滤器看起来像这样:

ng-repeat="request in allRequests | allRequests"


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

 allFutureRequests, allPastRequests, myPastRequests, group1FutureRequests


我希望交换出“ allRequests”过滤器,并根据用户单击的某些按钮动态地将其替换为其他任何过滤器。

我将如何去做?

最佳答案

最简单的方法是在控制器内执行此操作。 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

10-06 00:47