AngularJs的自定义搜索过滤器

时间:2014-06-25 11:24:26

标签: angularjs angularjs-ng-repeat angularjs-filter

假设我有一系列字符串,如["不要担心","担心","永远快乐,不要担心& #34; ]

当我搜索担心时,使用ng-repeat上的默认搜索过滤器,无论担心在搜索字符串中的位置如何,它都会给我三个结果。

我正在尝试为ng-repeat创建一个自定义搜索过滤器,以便在搜索时我会根据"忧虑"的位置对结果进行排序。在原始字符串中。

所以在搜索单词"担心"在上面的数组中,我的预期输出将是 ["担心","不要担心","永远快乐,不要担心"]。

这可能吗?

1 个答案:

答案 0 :(得分:5)

你可以尝试一下吗?

app.filter('wordsFilter', function() {
   return function(items, word) {
    var filtered = [];

    angular.forEach(items, function(item) {
        if(item.indexOf(word) !== -1){
            filtered.push(item);
        }
    });

    filtered.sort(function(a,b){
        if(a.indexOf(word) < b.indexOf(word)) return -1;
        else if(a.indexOf(word) > b.indexOf(word)) return 1;
        else return 0;
    });

    return filtered;
  };
});

我希望它有所帮助!