AngularJS,ng-repeat +过滤器从控制器调用

时间:2016-02-03 11:28:07

标签: javascript angularjs

我有一个棘手的问题

HTML:

ng-repeat="item in obj.Items | filter:someFilter"

JS:

$scope.someFilter = function (item) { ... }

哪个有效。但问题是,我需要能够在控制器内部的某处手动调用someFilter

好的,我知道我可以执行$filter("someFilter")(...),但该过滤器需要item object中的ng-repeat。那么,我该如何提供这个论点?

2 个答案:

答案 0 :(得分:1)

请针对提出的问题找到以下代码:

angular.forEach(obj.Items, function (key, value) {
    $scope.someFilter(value);
});

答案 1 :(得分:0)

您可以通过两种方式定义过滤器。

  • 作为__init__的函数。这是你的方式。
  • 创建自己的过滤器。

在第二种情况下,当您致电$scope时,作为参数,您需要传递数组来过滤您的商品。

jsfiddle

上的实例
$filter

和JS控制器

<form name="ExampleForm">
  Filter by $scope function fillArr
  <div ng-repeat="a in arr|filter:fillArr">
    {{a}}
  </div>
   Filter by filter filArrFilter
  <div ng-repeat="a in arr|filArrFilter">
    {{a}}
  </div>
    Filtered in $scope manualy
  <div ng-repeat="a in filteredArr">
    {{a}}
  </div>
</form>

和JS过滤器

$scope.arr = [1, 2, 3, 4, 5, 6, 8];
$scope.fillArr = function(item) {
  return item % 2 == 0;
}
$scope.filteredArr = $filter('filArrFilter')($scope.arr);

})