:[$ injector:unpr] angularjs中的未知提供程序无法将工厂注入控制器

时间:2014-10-23 11:27:28

标签: angularjs dependency-injection angularjs-injector

我有一个未知的提供程序错误,我不知道如何解决它。我认为我的服务,控制器被正确宣布。我已经尝试了一切,但它不起作用。我的photosFactory工厂不起作用。它没有注入控制器。我很感激任何帮助。

我的app.js:

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

my controllers.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;

          });
        }])

我的services.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}
                      })
                  }
              }
          })

4 个答案:

答案 0 :(得分:2)

我认为这是因为你没有在你的工厂注入$ 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,) { 

答案 1 :(得分:1)

那么,

你只声明了3个注射剂,

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

但想要使用6 - 这不好。

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

记住命令。

答案 2 :(得分:0)

您还没有包含您的HTML,因此无法确认 - 您是否在索引中包含了您的服务javascript?

假设您修复了各种导入问题,这似乎是最可能的原因。

答案 3 :(得分:0)

实际上你应该只宣告angular.module('starter.controllers', [])一次。您应该使用angular.module('starter.controllers')代替。 (例如angular.module('starter.controllers', []).controller ...