一尘不染

AngularJS过滤多个字符串

angularjs

我正在研究AngularJS教程,并了解的基础知识

但是,开箱即用的实现似乎仅限于将项目列表过滤为输入的确切单词或短语。

示例:如果查询是“ table cloth”,则结果列表可以包含带有短语“ Decorative table
cloth”的结果,但由于过滤器只是一个连续的搜索字符串,因此将不包括“ Table fortable装饰布”。

我知道可以添加自定义过滤器,但乍一看似乎主要是转换。

有什么方法可以添加自定义过滤器,以便“装饰用桌布”和“装饰用桌布”都显示在过滤结果集中?


阅读 213

收藏
2020-07-04

共1个答案

一尘不染

请看 下面的surfbuds答案,因为它比较好

只需滚动自己的过滤器即可:

.filter("myFilter", function(){
    return function(input, searchText){
        var returnArray = [];
        var searchTextSplit = searchText.toLowerCase().split(' ');
        for(var x = 0; x < input.length; x++){
            var count = 0;
            for(var y = 0; y < searchTextSplit.length; y++){
                if(input[x].toLowerCase().indexOf(searchTextSplit[y]) !== -1){
                    count++;
                }
            }
            if(count == searchTextSplit.length){
                 returnArray.push(input[x]);   
            }
        }
        return returnArray;
    }
});

jsfiddlehttp :
//jsfiddle.net/Cq3PF/

此过滤器确保找到所有搜索词。

2020-07-04