Javascript 自定义筛选器Ionic/AngularJS的未知提供程序

Javascript 自定义筛选器Ionic/AngularJS的未知提供程序,javascript,angularjs,filter,ionic,Javascript,Angularjs,Filter,Ionic,我正在尝试实现自定义筛选器,但出现以下错误: 错误:[$injector:unpr]未知提供程序:removeCharsFilterProvider 我不知道为什么会这样,据我所知,这应该是可行的。你能看到我缺少的东西吗?首先,你不需要在控制器中插入过滤器,它们是主应用程序的一部分,可以在任何控制器中使用$filter服务 过滤器不是独立的单例对象,因此不需要 包含为依赖项 由于您已将其添加到控制器中,因此它正在寻找服务或工厂,这些服务或工厂是单例的,因此需要注入。但在你的情况下,你有一个过滤

我正在尝试实现自定义筛选器,但出现以下错误:

错误:[$injector:unpr]未知提供程序:removeCharsFilterProvider
我不知道为什么会这样,据我所知,这应该是可行的。你能看到我缺少的东西吗?

首先,你不需要在控制器中插入过滤器,它们是主应用程序的一部分,可以在任何控制器中使用
$filter
服务

过滤器不是独立的单例对象,因此不需要 包含为依赖项

由于您已将其添加到控制器中,因此它正在寻找服务或工厂,这些服务或工厂是单例的,因此需要注入。但在你的情况下,你有一个过滤器,而不是服务

首先从控制器中移除
removeChars
。它给你$injector error,因为它正在寻找不存在的服务或工厂。如果要在控制器中使用过滤器,请使用bleow方式

app.controller('myController', ['$scope', '$filter',
   function($scope, $filter) {
   //use it like below if you  want to perform filters on data in controller
   $scope.someData = $filter('removeChars')(data);

  }
]);
如果您想在视图中使用过滤器,无需管理其依赖关系,请像您使用的方式一样直接在视图中使用

所以结论是,

  • 筛选器不能作为控制器的依赖项加载,因为它们不是单例

  • 过滤器可在控制器中使用$Filter

  • 在视图中,它们可以使用管道分隔符直接应用于数据


  • 希望这有帮助

    出现此错误是因为您以错误的方式使用$injector, 当您需要从视图外部筛选时,必须在依赖项上附加筛选后缀,这会告诉$injector您需要筛选

    angular.module('test', []).controller('TestCtrl', function(dateFilter) { console.log('DateFilter is', dateFilter); });
    

    另一种$injecta过滤器的方法,如前面的注释所述,是向$filter服务请求过滤器

    是否尝试将筛选器添加到app.js文件中的依赖项?像这样:var-app=angular.module('myApp',['ionic','removeChars'])@Daedalus非常好地发现了!然而,在修复后,我仍然得到相同的错误…@FurkanBasaran,这也不起作用…一切看起来都很好。你能创建一个plunker吗?
    app.filter('removeChars', function() {
      return function(input) {
        return input.replace(/-/g, '').replace(/>/g, '');
      };
    });
    
    <div ng-controller="myController">
     <p>{{person.name | removeChars}}</p>
    </div>
    
    <!-- your app's js -->
    <script src="js/app.js"></script>
    
    <!-- filters -->
    <script src="js/filters/removeCharsFilter.js"></script>
    
    <!-- controllers -->
    <script src="js/controllers/myController.js"></script>
    
    app.controller('myController', ['$scope', '$filter',
       function($scope, $filter) {
       //use it like below if you  want to perform filters on data in controller
       $scope.someData = $filter('removeChars')(data);
    
      }
    ]);
    
    angular.module('test', []).controller('TestCtrl', function(dateFilter) { console.log('DateFilter is', dateFilter); });