【问题标题】:Passing complete object to AngularJS filter Comparator将完整对象传递给 AngularJS 过滤器比较器
【发布时间】:2018-08-01 11:06:00
【问题描述】:

我正在使用 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?
    });
};

如何从比较器内的对象访问其他属性?

【问题讨论】:

    标签: javascript angularjs filter filtering


    【解决方案1】:

    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";
        });
    };
    

    【讨论】:

      猜你喜欢
      • 2012-07-29
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      相关资源
      最近更新 更多