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