控制器中字符串数组的角度过滤器

时间:2015-10-12 15:15:44

标签: angularjs filter controller

是否可以根据https://docs.angularjs.org/guide/filter过滤字符串数组而不只是一个字符串?

Object

2 个答案:

答案 0 :(得分:0)

是的,为什么不呢?你可以这样做:

angular.module('yourModule', [])
.filter('filterFromArray', function() {
  return function(input, arrayToMatch) {
    input = input || [];
    arrayToMatch= arrayToMatch|| [];
    var l = input.length,
        k = arrayToMatch.length,
        out = [], i = 0,
        map = {};

    for (; i < k; i++) {
      map[arrayToMatch[k]] = true;
    }

    for (i = 0; i < l; i++) {
      if(map[input[i].name]){
          out.push(input[i]);
      }
    }

    return out;
  };
});

然后你可以这样使用它:

$filter('filterFromArray')($scope.data, $scope.arrayOfStrings);

或表达式:

{{ data | filterFromArray:arrayOfStrings}}

您还可以添加更多参数,甚至可以匹配对象中的aq特定字段,而不仅仅是名称,但这取决于您。

答案 1 :(得分:0)

是的,你可以。这是一个演示http://plnkr.co/edit/e8yLSV3AwskKlscIPYvp?p=preview

angular.module('MyApp', [])
  .controller('MyCtrl', MyCtrl)
  .filter('customFilter', customFilter);

  function customFilter () {
    return function (input, arrayOfString) {
      return input.filter( function( el ) {
        return arrayOfString.indexOf( el.name ) < 0;
      });
    }
  }