未知提供者:myFilterProvider< - myFilter,

时间:2015-10-30 06:08:04

标签: angularjs dependency-injection angularjs-filter

我正在学习角度并构建一个小应用程序。我正在使用角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;
        }])
     })();

在网络选项卡中,我可以看到文件正确加载。我可以尝试解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

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

.controller('mainController', function(..., trimWordsFilter, ...) {

(请注意Filter后缀)或

.controller('mainController', function(..., $filter, ...) {
    var trimWordsFilter = $filter('trimWords');

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