2014-10-20 66 views
-1

我试图依赖注入一个服务,我收到以下错误误注入未知提供商

Error: [$injector:unpr] Unknown provider: allStatesServiceProvider <- allStatesService

脚本:PlanDesignController

(function() { 
    'use strict'; 
    var controllerId = 'PlanDesignController'; 

    angular.module('myApp').controller(controllerId, 
     ['$scope', 'planDesignService', 'allStatesService', 
     'logger', '$timeout', '$routeParams', '$location', PlanDesignController]); 

    function PlanDesignController($scope, planDesignService, allStatesService 
          , logger, $timeout, $routeParams, $location) { } 
} 

脚本:allStatesService

(function() { 
    'use strict'; 
    var serviceId = 'allStatesService'; 

    angular.module('myApp') 
    .factory(serviceId, ['$http','logger', 'appSettings', 'breeze', allStatesService]); 

    console.log("Gets into AllStatesService.js"); 

    function allStatesService($http, logger, appSettings) {} 
} 

我能做些什么来解决这个错误?

+0

为什么要将控制器和服务注入为依赖项? – 2014-10-20 15:45:51

+0

我不确定你的英语是否坏,但我假设你问我为什么要向我的控制器注入一项服务?这使我能够访问的方法/ members/properties/etc。那个“注入”服务的控制器内部,我“注入”了它。这有助于澄清? – user1789573 2014-10-20 15:49:30

回答

1

我不完全确定问题在哪里。所以我创建了一个笨蛋来显示你的代码几乎可以工作。检查这working example。有一点调整的代码片断

angular.module('myApp', []); 

(function() { 
    'use strict'; 
    var controllerId = 'PlanDesignController'; 

    angular.module('myApp').controller(controllerId, 
    ['$scope', 'planDesignService', 'allStatesService', 
    'logger', '$timeout', '$routeParams', '$location', PlanDesignController]); 

    function PlanDesignController($scope, planDesignService, allStatesService 
    , logger, $timeout, $routeParams, $location) 
    { $scope.text = allStatesService.greet()} 

})(); 

(function() { 
    'use strict'; 
    var serviceId = 'allStatesService'; 

    angular.module('myApp') 
    .factory(serviceId, ['$http', 'logger', 'appSettings', 'breeze' 
    , allStatesService]); 

function allStatesService($http, logger, appSettings) { 
    var greeting = function() { 
    return "Welcome from service" 
    }; 
    return { 
    greet : greeting, 
    }; 
} 

})(); 

主要的变化是目前该服务回报与funtcion对象调用greet()。这在控制器中被调用,它的结果被放入范围。

此代码片段显示,它几乎相同...但是working。因此,这可以帮助您找出原始代码中的不同之处......并使其运行

+0

此代码对我无效。实际上,我没有看到依赖注入的任何改变,并且Plunkr只测试控制器,而不是服务。服务是问题,我的控制器工作正常。 – user1789573 2014-10-20 16:14:52

+0

我更新了plunker并回答。现在您应该看到,该服务用于提供某些功能,其结果通过控制器显示......无论如何它有帮助吗? – 2014-10-20 16:19:40

+0

好吧,这看起来不错,但我不知道你有什么和我有什么区别...我以相同的方式做注射,这是令人沮丧的,因为我看不见为什么我应该得到那个错误! – user1789573 2014-10-20 16:25:45

相关问题