Angularjs 未知提供程序:myFilterProvider<;-我的过滤器,

Angularjs 未知提供程序:myFilterProvider<;-我的过滤器,,angularjs,dependency-injection,angularjs-filter,Angularjs,Dependency Injection,Angularjs Filter,我正在学习angular并构建一个小应用程序。我使用的是angular 1.3.1。我编写了一个自定义过滤器,在阅读文档后,我认为我使用的语法是正确的。依赖性注射有点不对劲,尽管我不断得到一个“未知提供者”,但我无法再解释可能的错误。请告诉我为什么这不起作用,提前谢谢 这是我的过滤功能: angular.module('trimWords', []) .filter('trimWords', function(){ return function(input, words){

我正在学习angular并构建一个小应用程序。我使用的是angular 1.3.1。我编写了一个自定义过滤器,在阅读文档后,我认为我使用的语法是正确的。依赖性注射有点不对劲,尽管我不断得到一个“未知提供者”,但我无法再解释可能的错误。请告诉我为什么这不起作用,提前谢谢

这是我的过滤功能:

angular.module('trimWords', [])
   .filter('trimWords', function(){
      return function(input, words){
         if(isNaN(words)) return input;
         if(input){
           var inputWords = input.split(/\s+/);
              if(inputWords.length > words){
                 input = inputWords.slice(0, words).join(' ') + '...';
               }
           }
           return input;
        };
   });
下面是我在我的应用程序中声明它并将其作为依赖项注入:

  (function(){
       var myApp = angular.module('myApp',['ngStorage','ngAnimate','ngRoute',
       'mainController', 'todoService','formController', 'trimWords']);
       angular.module('mainController', [])
             .controller('mainController',['$scope', '$localStorage', 'Todos','trimWords', function($scope, $localStorage, Todos, trimWords){
              $scope.$storage = Todos.initStorage;
              $scope.formData = {};
              $scope.formData.text = ' ';
              $scope.createToDo = Todos.createToDo
              $scope.formData.text = ' ';
              $scope.destroyTodo = Todos.destroyTodo;
        }])
     })();

在“网络”选项卡中,我可以看到文件正在正确加载。我能做些什么来解决这个问题呢?

trimWords是一个过滤器,而不是一个服务。如果要将其注入控制器,请执行以下操作之一:

.controller('mainController', function(..., trimWordsFilter, ...) {
(注意
过滤器
后缀),或


也就是说,在发布的代码中,控制器不使用过滤器,因此没有理由将其注入。

为什么将控制器作为依赖项注入?是的,您创建的模块太多,这可能不是必需的。不管怎样,你能把你在控制台上得到的准确错误写出来吗?我在哪里做?这与过滤器功能有关吗?只有当我尝试添加过滤器“trimWords”时,我才得到错误。感谢you@Kulbushan谢谢这里是控制台的错误:错误:[$injector:unpr]错误(本机)在谢谢Vinett和Kulbhushan,我现在已经重构了。。。感谢您对我的代码发表评论非常感谢,这解决了提供程序错误。我的意图是在主控制器中使用过滤器。现在,当我尝试在html中使用过滤器时,我遇到了一个语法错误。我使用这个表达式:
。很抱歉,我以为一旦你将过滤器连接到模块,你就可以在表达式中使用它。。。对不起。。。我还需要做什么才能使用它吗?非常感谢。要使用过滤器,请使用单个垂直条:
todo.text | trimWords:10
谢谢。。。那奏效了。。对不起,我自己错过了。再次感谢。。我可能需要更多的睡眠:/
.controller('mainController', function(..., $filter, ...) {
    var trimWordsFilter = $filter('trimWords');