Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在AngularJS控制器中调用普通过滤器函数_Angularjs_Angularjs Filter - Fatal编程技术网

在AngularJS控制器中调用普通过滤器函数

在AngularJS控制器中调用普通过滤器函数,angularjs,angularjs-filter,Angularjs,Angularjs Filter,在我看来,我使用一个函数来过滤选择框中的某些项目: <select class="..." ng-model="selectedItem" ng-options="item.name for item in items | filter:filterItems(someArgument)"> </select> 这个很好用 但是,现在我想在控制器中使用相同的过滤函数,并计算过滤后的项目数 我无法使用此代码,因为filterItems()不是AngularJS筛选

在我看来,我使用一个函数来过滤选择框中的某些项目:

<select class="..."
  ng-model="selectedItem"
  ng-options="item.name for item in items | filter:filterItems(someArgument)">
</select>
这个很好用

但是,现在我想在控制器中使用相同的过滤函数,并计算过滤后的项目数

我无法使用此代码,因为
filterItems()
不是AngularJS筛选器:

$scope.filterItems = function(someArgument) {
  return function(item) {
    // Do something

    return someResult;
  }
};
$scope.countFilteredItems = function() {
  return $filter('filterItems')($scope.items, someArgument).length;
};

我有没有办法在控制器中使用我的过滤功能,而不需要自己重新实现整个过滤过程?我可以将
$filter
服务与我的香草过滤器功能一起使用吗?

我设法用
$filter
服务调用了我的过滤器功能,正如@jornsharpe在他的评论中所建议的:

$scope.countFilteredItems = function() {
  var filteredItems = $filter('filter')($scope.items, $filterItems(someArgument));

  var count = 0;
  if (filteredItems !== undefined && filteredItems !== null) {
    count = filteredItems.length;
  }

  return count;
};
你读了吗?您可以将任意谓词函数传递给
$filter
。例如:
$filter('filter')($scope.items,$scope.filterietems(someArgument))