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

时间:2018-09-07 11:19:19

标签: angularjs angularjs-filter

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

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

此函数在控制器中定义为普通函数,它不是AngularJS过滤器:

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

    return someResult;
  }
};

这很好用。

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

由于filterItems()不是AngularJS过滤器,因此我无法使用此代码:

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

有什么方法可以在控制器中使用我的过滤器功能,而无需亲自重新实现整个过滤过程?我可以在我的香草过滤器功能中使用$filter服务吗?

1 个答案:

答案 0 :(得分:0)

正如@jonrsharpe在他的评论中建议的那样,我设法通过<script> function showNoty() { var n = new Noty({ text: "<?php echo $message; ?>", type: "error", layout: "top", theme:"sunset", container: "#content", closeWith:[] }); n.show(); } showNoty(); </script> 服务调用了我的过滤器功能:

$filter