Неизвестный поставщик: myFilterProvider <- myFilter,

0

Я изучаю углы и создаю небольшое приложение. Я использую угловой 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;
        }])
     })();

На вкладке "Сеть" я вижу, что файл загружается должным образом. Что я могу попытаться исправить?

  • 0
    почему вы вводите контроллер как зависимость?
  • 0
    да, вы создаете слишком много модулей, которые могут не потребоваться. В любом случае, не могли бы вы указать, какую именно ошибку вы получите в консоли?
Показать ещё 3 комментария
Теги:
dependency-injection
angularjs-filter

1 ответ

0

trimWords - это фильтр, а не служба. Если вы хотите, чтобы его вводили в контроллер, выполните одно из следующих действий:

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

(обратите внимание на суффикс Filter) или

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

Тем не менее, в опубликованном коде контроллер не использует фильтр, поэтому нет причин его вводить.

  • 0
    Спасибо большое, что разрешили ошибку провайдера. Я намеревался использовать фильтр в mainController. Теперь я получаю синтаксическую ошибку, когда пытаюсь использовать фильтр в своем HTML. Я использую это выражение: <h4 ng-bind="todo.text || trimWords: 10"></h4> . Извините, я подумал, что как только вы прикрепите фильтр к модулю, его можно будет использовать в выражениях ... извините ... мне нужно еще что-нибудь сделать, чтобы использовать его? Спасибо!!!
  • 0
    Чтобы использовать фильтр, используйте одну вертикальную черту: todo.text | trimWords:10
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню