2014-10-20 67 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

相關問題