自定义过滤器列表

时间:2015-08-19 23:47:39

标签: javascript regex angularjs

我试图让过滤器只显示列表中与用户输入匹配的元素。

#70303775861760

并且在观点上:

.filter('removeAcentos', function(){

    return function (source, item) {
    var re = new RegExp("" + item.toLowerCase() + "");
        angular.forEach(source, function(word){
            if(re.test(word.nomeCurso.toLowerCase()) === true){
                return true;
            }
        });
      //
        return false;
    };
})

但是,我不明白为什么它不起作用。我测试了正则表达式,过滤函数返回true表示正确的值。任何想法?

1 个答案:

答案 0 :(得分:2)

您的函数没有返回数组。函数返回的唯一内容是false

forEach也不是适合这项工作的合适工具。尝试使用Array.prototype.filter()并记住返回新数组:

.filter('removeAcentos', function(){

    return function (source, item) {
       if(!source){
          return false;
       }  
        var re = new RegExp("" + item.toLowerCase() + "");
       // return filtered array
       return source.filter( function(word){
            return re.test(word.nomeCurso.toLowerCase());
        });

    };
})
相关问题