Angular - 自定义过滤器如何真正起作用?

时间:2014-11-25 10:19:39

标签: javascript angularjs

我尝试实现自己的过滤器,并且我找到了这个有效的例子http://jsfiddle.net/TahmidTanzim/N9Vqk/

但我不明白一些事情:

1)在下面的代码中,它来自clients数组?我看到$scope.clients字段,但我看不到它是如何在过滤函数中注入的

angular.module('App.filters', []).filter('companyFilter', [function () {
        return function (clients, selectedCompany) { .....

2)什么是filtered?它只是clients内过滤的()的名称/别名吗?

<tr data-ng-repeat="client in filtered = (clients | companyFilter:selectedCompany)">

3)我认为以下函数是自定义过滤器,但该过滤器需要clients数组和一些ID,但该函数与该标准不匹配。

_.contains($scope.selectedCompany, id)
_.without($scope.selectedCompany, id)
_.pluck($scope.companyList, 'id')

1 个答案:

答案 0 :(得分:1)

过滤器将其应用的内容作为第一个参数,因此当您执行“smth | filter”时,smth将作为第一个参数传递给过滤器,第二个参数是您在“:”之后添加的参数,例如:“smth | filter:params”。 并且过滤函数返回实际的过滤结果。

所以在这种情况下:

<tr data-ng-repeat="client in filtered = (clients | companyFilter:selectedCompany)">

filter将使用带有参数'selectedCompany'的数组'clients',返回一个将传递给ng-repeat的数组。