AngularJS过滤器模糊搜索

时间:2016-10-20 17:04:51

标签: javascript angularjs angularjs-filter

我的控制器中有一个过滤器,如下所示:

$scope.LegEntQueue = $filter('filter')(legEncoderQueue, {FileAppCD: 'ENT'}).length;

如果值为legEncoderQueue

,则根据名为FileAppCD的属性计算名为ENT的数组的结果

这很有效,但有没有办法让它模糊搜索并选择值中有ENT的任何内容?例如ENT-M-AndENT-M-iOS

2 个答案:

答案 0 :(得分:2)

有一个属性$,它将对集合中的所有属性执行子字符串搜索。在您的情况下,您可以使用

$scope.LegEntQueue = $filter('filter')(legEncoderQueue, {$: 'ENT'})

From the angular docs

  

可以使用特殊属性名称(默认为$)(例如{$:   “text”})接受对象或其对象的任何属性的匹配   嵌套对象属性。

答案 1 :(得分:0)

Thank you all for your input, it took me a moment to realize my ignorance, thinking I could just use some built in angular filter to do what just plain javascript could do.

My Solution, was to create a function:

$scope.regexCount = function(array, feild, pattern) {
    var count = 0;
    for (index = 0; index < array.length; index++) {
        if (pattern.test(array[index][feild])) {
            count ++;
        }
    }
    return count;
};

And then pass in my parameters.

$scope.LegEntQueue = $scope.regexCount(legEncoderQueue, 'FileAppCD', /ENT.*/);