将完整的对象传递到AngularJS滤波器比较器



我正在使用Angular的$filter("filter")过滤数组O对象。由于我有一个复杂的过滤,因此我决定定义一个比较器。尽管如此,在我的比较器中,只有出现在过滤表达式上的属性

可用
var array = [
    {"id": 1, "placeId":253, "name":"John"},
    {"id": 2, "placeId":253, "name":"Jane"},
    {"id": 3, "placeId":32, "name":"Mike"},
    {"id": 4, "placeId":89, "name":"Ana"}
];
var awesomeFiltering = function(){
    return $filter("filter")(array, {"placeId":253}, function(actual expected){
        // "actual" brings only the value for placeId attribute!
        // How do I access attribute "name", for example?
    });
};

如何从比较器中的对象中加入其他属性?

comparator仅用于从定义的表达式{"placeId":253}检索的值。由于您的表达仅包括placeId,这是您可以在comparator中检索的唯一值。

但是,您只能使用自定义过滤器expression,而无需使用comparator进行复杂的过滤。

var awesomeFiltering = function(){
    return $filter("filter")(array, function(value, index, array){
        return value.placeId === 253 && value.name === "John";
    });
};

最新更新