Angularjs 角度过滤器:搜索两类多个

Angularjs 角度过滤器:搜索两类多个,angularjs,search,filter,Angularjs,Search,Filter,我一直在想一种方法来搜索产品的名称和生产者,而不仅仅是其中之一。通过查看文档,我发现了如何将搜索过滤器与一种(而不是多个(不是全部))关联起来。 例如,如果我有一个包含姓名、姓氏和电话号码的人员列表,我希望能够在一个输入字段中只搜索姓名和姓氏。如果我在搜索字段中键入,此模型将查找名称和制作人的匹配项。我如何做到这一点 提前谢谢你! 上面是我的代码 HTML: JSON文件: [ { "name" : "Sample Beer", "producer" : "Gr

我一直在想一种方法来搜索产品的名称和生产者,而不仅仅是其中之一。通过查看文档,我发现了如何将搜索过滤器与一种(而不是多个(不是全部))关联起来。 例如,如果我有一个包含姓名、姓氏和电话号码的人员列表,我希望能够在一个输入字段中只搜索姓名和姓氏。如果我在搜索字段中键入,此模型将查找名称和制作人的匹配项。我如何做到这一点

提前谢谢你! 上面是我的代码

HTML:

JSON文件:

[
{
    "name"       : "Sample Beer", 
    "producer"   : "Great Beer Producer",
    "picture"    : "two",
    "type"       : "beer",
    "packaging"  : "glass",
    "alko"       : "yes",
    "volume"     : "1",
    "popularity" : "1",
    "country"    : "Latvia",
    "added"      : "2015-01-03",
    "price"      : "20,40"
},{
    "name"       : "Sample Cider",
    "producer"   : "Great Cider Producer",
    "picture"    : "one",
    "type"       : "cider",
    "packaging"  : "plastic",
    "alko"       : "yes",
    "volume"     : "2",
    "popularity" : "3",
    "country"    : "Estonia",
    "added"      : "2015-01-03",
    "price"      : "20,40"
},{
    "name"       : "Best Wine",
    "producer"   : "Wine for You",
    "picture"    : "eight",
    "type"       : "wine",
    "packaging"  : "glass",
    "alko"       : "yes",
    "volume"     : "2",
    "popularity" : "5",
    "country"    : "Lithuania",
    "added"      : "2015-01-03",
    "price"      : "20,40"
},{
    "name"       : "Another Beer",
    "producer"   : "Beer Land",
    "picture"    : "seven",
    "type"       : "beer",
    "packaging"  : "aluminium",
    "alko"       : "no",
    "volume"     : "4",
    "popularity" : "2",
    "country"    : "Latvia",
    "added"      : "2015-05-03",
    "price"      : "21,40"
}
]

您可以创建自己的自定义过滤器,如下所示

过滤器

.filter('customFilter', function() {
    return function(query) {
        var out = [];
        angular.forEach($scope.products, function(value, key) {
            if (value['name'] == query || value['producer'] == query)
                this.out.push(value)
        })
        return out;
    }
});

谢谢你,但我想我在Angular方面的水平太低了,所以我不知道如何只按姓名和制作人搜索:(您的json中没有姓氏。将编辑我的问题,谢谢。我希望能够搜索姓名或制作人,而不是其他所有内容。好的。那很好。如果搜索文本同时出现在两个字段或其中一个字段中,您想显示产品吗?谢谢,但fiddle lokks与前面一样,带有定义的啤酒。您可以吗请放心,编辑它?谢谢!另外:我们的想法是返回的产品名称或生产商都有查询,而不是两者都有。注意,它的文本区分大小写,您可以添加逻辑以获得它。您对如何查找有何建议?我找到了!谢谢!
[
{
    "name"       : "Sample Beer", 
    "producer"   : "Great Beer Producer",
    "picture"    : "two",
    "type"       : "beer",
    "packaging"  : "glass",
    "alko"       : "yes",
    "volume"     : "1",
    "popularity" : "1",
    "country"    : "Latvia",
    "added"      : "2015-01-03",
    "price"      : "20,40"
},{
    "name"       : "Sample Cider",
    "producer"   : "Great Cider Producer",
    "picture"    : "one",
    "type"       : "cider",
    "packaging"  : "plastic",
    "alko"       : "yes",
    "volume"     : "2",
    "popularity" : "3",
    "country"    : "Estonia",
    "added"      : "2015-01-03",
    "price"      : "20,40"
},{
    "name"       : "Best Wine",
    "producer"   : "Wine for You",
    "picture"    : "eight",
    "type"       : "wine",
    "packaging"  : "glass",
    "alko"       : "yes",
    "volume"     : "2",
    "popularity" : "5",
    "country"    : "Lithuania",
    "added"      : "2015-01-03",
    "price"      : "20,40"
},{
    "name"       : "Another Beer",
    "producer"   : "Beer Land",
    "picture"    : "seven",
    "type"       : "beer",
    "packaging"  : "aluminium",
    "alko"       : "no",
    "volume"     : "4",
    "popularity" : "2",
    "country"    : "Latvia",
    "added"      : "2015-05-03",
    "price"      : "21,40"
}
]
.filter('customFilter', function() {
    return function(query) {
        var out = [];
        angular.forEach($scope.products, function(value, key) {
            if (value['name'] == query || value['producer'] == query)
                this.out.push(value)
        })
        return out;
    }
});