在 Controller 内部,我想过滤一组对象。每个对象都是一个映射,可以包含字符串和列表
我尝试使用$filter('filter')(array, function)
格式,但是我不知道如何访问函数内部数组的各个元素。这是显示我想要的片段。
$filter('filter')(array, function() {
return criteriaMatch(item, criteria);
});
然后在
criteriaMatch()
中,我将检查每个单独的属性是否匹配var criteriaMatch = function(item, criteria) {
// go thro each individual property in the item and criteria
// and check if they are equal
}
我必须在 Controller 中完成所有这些操作,并编译列表列表,然后在范围内进行设置。因此,我确实需要仅通过这种方式访问
$filter('filter')
。到目前为止,我在网上发现的所有示例都在函数内部进行了静态条件搜索,它们没有通过条件对象并针对数组中的每个项目进行测试。 最佳答案
您可以像这样使用它:
http://plnkr.co/edit/vtNjEgmpItqxX5fdwtPi?p=preview
就像您发现的那样,filter
接受谓词函数,该谓词函数接受item
按数组中的项目。
因此,您只需要基于给定的criteria
创建一个谓词函数。
在此示例中,criteriaMatch
是一个返回谓词的函数
匹配给定criteria
的函数。
模板:
<div ng-repeat="item in items | filter:criteriaMatch(criteria)">
{{ item }}
</div>
范围:
$scope.criteriaMatch = function( criteria ) {
return function( item ) {
return item.name === criteria.name;
};
};
关于arrays - AngularJS自定义过滤器功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16474091/