我对ngrepeat有一个自定义过滤器,它只需要在特定字段中搜索单词。我得到了正确的工作,如下面的代码所示。问题是,我也需要这样做,不仅要处理一个词,而且要处理多个词。例如,如果我有一个数组word1和word2,我至少需要在任何指定的字段中匹配两个字。自定义过滤器只搜索几个关键字的特定字段
$scope.mySearch = function (item){
var searchTerm = "word1"; //Need to be able to search on ["word1","word2"]
var fields = ['firstName', 'lastName', 'email', 'phone', 'fax', 'category', 'subCat', 'company', 'street', 'zip', 'state', 'city', 'country'];
for(var i = 0, l = fields.length; i < l; i ++){
if(item[fields[i]] && item[fields[i]].toLowerCase().indexOf(searchTerm)!==-1){
return true;
}
} return false;
};
此代码适用于一个单词,在本例中为“word1”...如何让它适用于单词数组?试图添加另一个循环时我迷路了。下面
感谢这个工程,但它失去了找不完整的单词的能力。例如,如果我只输入“wor”,它就不会返回所有包含“word”的条目。在这种情况下,我必须完成输入完整的单词才能工作。 –
正如我上面提到的那样,您可以根据自己的需求对其进行自定义。对于子字符串匹配,可以将'return item [field] === word;'更改为'return item [field] .indexOf(word)> -1;'。 – gkalpak
谢谢,我非常喜欢你的解决方案...甚至没有想到它可能没有循环。我想我明白你的代码应该做什么,除了indexOf不能在item [field]上调用?! –