我知道在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