Angularjs 将视图过滤器转换为控制器过滤器

Angularjs 将视图过滤器转换为控制器过滤器,angularjs,Angularjs,我试图通过将代码从视图移动到控制器来优化性能 我想在我的视图中移动此代码: ng-repeat="item in items | filter: {passed:false} | filter: data.searchQuery | filter: deepSearch() | orderBy: 'begin_datetime'" ng-repeat="item in filteredItems | orderBy: 'begin_datetime'" 在我的控制器中执行类似操作: $

我试图通过将代码从视图移动到控制器来优化性能


我想在我的视图中移动此代码

ng-repeat="item in items | filter: {passed:false} | filter: data.searchQuery | filter: deepSearch() | orderBy: 'begin_datetime'"
ng-repeat="item in filteredItems | orderBy: 'begin_datetime'"
在我的控制器中执行类似操作:

  $scope.filteredItems = [];

  var applyFilters = function() {
    var items = [];
    items = $filter({passed:false})($scope.items);
    items = $filter($scope.data.searchQuery)(items);
    items = $filter($scope.deepSearch())(items);
    $scope.filteredItems = items;
  }
要在我的视图中获取此信息

ng-repeat="item in items | filter: {passed:false} | filter: data.searchQuery | filter: deepSearch() | orderBy: 'begin_datetime'"
ng-repeat="item in filteredItems | orderBy: 'begin_datetime'"

然而,我却陷入了困境


错误:[$injector:unpr]未知提供程序:[对象对象]过滤器提供程序您必须将$filter注入控制器

app.controller('myController', function($filter){ 
而且

我认为过滤程序需要一个过滤器名称,如下所示:

$scope.b=$filter($myFilter')($scope.items)

更新:

如果您想按程序进行筛选,并且这只是一个常规搜索,那么筛选名称将只是“filter”

$filter('filter')(array, expression, comparator) // comparator is optional
HTML等价物是:

{{ array | filter : expression : comparator}}

示例:

我做了:。控制器('SearchCtrl',['$scope','$cordovaGeolocation','Cache','localize','DSCacheFactory','logger','$cordovaNetwork','$ionicSideMenuDelegate','$filter',函数($scope、$cordovaGeolocation、Cache、localize、DSCacheFactory、logger、$cordovaNetwork、$ionicSideMenuDelegate、$filter){过滤器命名如何?当以编程方式进行过滤时,您可能需要指定一个过滤器名称。我明白了。但是我该如何写“{传递:false}”使用过滤器名称?我需要创建自己的过滤器吗?根据这一点,似乎我应该注册一个过滤器,但我不知道如何以及在哪里注册。