2015-10-30 55 views
0

我正在學習角色並構建一個小應用程序。我正在使用角1.3.1。我寫了一個自定義過濾器,並在閱讀文檔後認爲*正確使用了該語法。依賴注入有些問題,但是我一直收到一個「未知的提供者」,我無法推斷可能會出現什麼問題。請告訴我爲什麼這不起作用,提前謝謝!未知提供者:myFilterProvider < - myFilter,

這裏是我的過濾功能:

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; 
     }]) 
    })(); 

在網絡選項卡上,我可以看到,文件加載正常。我可以嘗試解決這個問題?

+0

爲什麼你注入控制器作爲依賴? – Vineet

+0

是的,你正在創建太多的模塊,這可能不是必需的。不管怎樣,你能否把你在控制檯 – Kulbhushan

+0

中得到的確切錯誤放在哪裏?這與過濾功能有關嗎?只有當我試圖添加過濾器「trimWords」時,我得到了錯誤。謝謝 – Liam

回答

0

trimWords是一個過濾器,而不是服務。如果你希望它被注入到一個控制器,然後做這些事情之一:

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

(注意Filter後綴),或

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

這就是說,在發佈代碼時,控制器不使用過濾器,所以沒有理由注入它。

+0

非常感謝,解決了提供商錯誤。我的意圖是在mainController中使用過濾器。現在,當我嘗試在我的html中使用過濾器時,出現語法錯誤。我用這個表達式:'

'。我很抱歉,我認爲一旦你將過濾器連接到模塊上,它就可以用在表達式中......我很抱歉...還有什麼我需要做的才能使用它?謝謝!!! – Liam

+0

要使用過濾器,請使用**單個**垂直條:'todo.text | trimWords:10' –

+0

謝謝你...那工作..對不起,我錯過了我自己。再次感謝..我可能需要更多的睡眠:/ – Liam

相關問題