: [$injector:unpr] Неизвестный провайдер в angularjs не может внедрить factory в контроллер

У меня ошибка неизвестного провайдера, и я не знаю, как ее решить. Я думаю, что мои службы, контроллеры объявлены правильно. Я пробовал все, но это не работает. мои фотоФабрика фабрики не работает. он не вводится в контроллер. Буду признателен за любую помощь.

Мой app.js:

 angular.module('starter', ['ionic', 'starter.controllers', 'starter.services']) 

мои контроллеры.js:

 angular.module('starter.controllers', [])
 .controller('PlaylistsCtrl', ['$scope', 'photosFactory', '$http', function ($scope, $http, Util, $ionicLoading, $location, photosFactory) {

        $ionicSideMenuDelegate.canDragContent(true);

        $scope.allDeals = [];


        $scope.navigate = function(url){
            $location.path(url);
        };
        photosFactory.getPhotos().success(function(data){
            $scope.allDeals= data;

          });
        }])

Мои сервисы.js:

angular.module('starter.services', [])

         .factory('photosFactory', function($http) {
              return{
                  getPhotos : function() {
                      return $http({
                          url: 'http://www.somecompany.co.uk/bigcapi/feeds/deals/company_id/88',
                          method: 'GET',
                          params: {all: '1', mobileready: 1}
                      })
                  }
              }
          })

person Joanna    schedule 23.10.2014    source источник
comment
Пожалуйста, отредактируйте название, оно неясно   -  person Sasa    schedule 23.10.2014
comment
Имея эту же ошибку, и это очень расстраивает. Кажется, это происходит только под Ionic.   -  person csvan    schedule 03.07.2015


Ответы (4)


Я думаю, это потому, что вы не вводите $http в свою фабрику. Попытайся

.factory('photosFactory', [ '$http', function($http) {
              return{
                  getPhotos : function() {
                      return $http({
                          url: 'http://www.somecompany.co.uk/bigcapi/feeds/deals/company_id/88',
                          method: 'GET',
                          params: {all: '1', mobileready: 1}
                      })
                  }
              };
          }]);

Также есть проблема при объявлении вашего контроллера

['$scope', 'photosFactory', '$http', function ($scope, $http, Util, $ionicLoading, $location, photosFactory) {

Порядок очень важен, поэтому у вас должно быть что-то вроде этого

['$scope', 'photosFactory', '$http', 'Util', '$ionicLoading', '$location', function ($scope, photosFactory, $http, Util, $ionicLoading, $location,) { 
person Mathieu Bertin    schedule 23.10.2014
comment
он все еще показывает ту же ошибку, но спасибо за ответ. - person Joanna; 23.10.2014

Что ж,

Вы задекларировали только 3 инъекции,

controller('PlaylistsCtrl', ['$scope', 'photosFactory', '$http', 

а хотите использовать 6 - это нехорошо.

function ($scope, $http, Util, $ionicLoading, $location, photosFactory)

Следите за порядком.

person MiTa    schedule 23.10.2014
comment
спасибо, но я все еще получаю ту же ошибку, я думал, что это будет так просто сделать, просто хотел переместить мои вызовы ajax в службы, но, похоже, не могу этого сделать. они работают с контроллеров, но это плохой код, и я не могу его изменить, поэтому они должны быть в службах, но не могу заставить их работать. - person Joanna; 23.10.2014
comment
Хорошо, я создал небольшой jsfiddle, проверьте jsfiddle.net/fdzwqszx - он работает, конечно, HTTP-вызов завершится ошибкой , но приложение загружается. Я удалил зависимость от ionic. - person MiTa; 23.10.2014
comment
хорошо, спасибо, я нигде не объявляю свой контроллер PlaylistsCtrl. - person Joanna; 23.10.2014

Вы не включили свой HTML-код, поэтому не можете подтвердить - вы включили javascript своих услуг в индекс?

Предполагая, что вы исправите различные проблемы с импортом, это кажется наиболее вероятной причиной.

person Chanoch    schedule 26.11.2015

На самом деле вы должны объявить angular.module('starter.controllers', []) только один раз. Вместо этого вы должны использовать angular.module('starter.controllers'). (например, angular.module('starter.controllers', []).controller ...

person Ricky Taki    schedule 27.11.2015