【问题标题】:Custom search filter for AngularJsAngularJs 的自定义搜索过滤器
【发布时间】:2014-06-25 11:24:26
【问题描述】:

假设我有一个字符串数组,例如 ["don't crazy", "worry", "Always be happy and don't crazy" ]

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

我正在尝试为 ng-repeat 制作自定义搜索过滤器,以便在搜索担心时,我应该根据原始字符串中“担心”的位置对结果进行排序。

所以在上面的数组中搜索单词“worry”时,我的预期输出将是 [“担心”,“别担心”,“永远快乐,别担心”]。

这可能吗?

【问题讨论】:

  • 确保按照文档中的说明创建自定义过滤器。
  • 请告诉我我的解决方案是否合适! :)
  • @superpuccio 是的,它有效,非常感谢:)
  • 很高兴能帮到你!

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


【解决方案1】:

你能试试这个吗?

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;
  };
});

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2021-03-20
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    相关资源
    最近更新 更多