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

왜 컨트롤러와 서비스를 의존성으로 주입합니까? –

+0

영어가 나쁘지는 모르겠지만 왜 내 컨트롤러에 서비스를 주입하는지 묻는다고 가정하고 있습니까? 이게 내가 할 수있는 방법/멤버/속성/등 액세스 할 수 있습니다. 컨트롤러에있는 "주입 된"서비스를 i "주입"합니다. 그것은 명확히하는 데 도움이됩니까? – user1789573

답변

1

여기에서 문제가 어디인지 확실하지 않습니다. 그래서 당신의 코드가 거의 작동하고 있음을 보여줄 플 런커를 만들었습니다. 이 working example을 확인하십시오. 약간 조정 된 코드는 주요 변화는 지금 되돌아가 funtcion 객체를 서비스 greet()라고

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, 
    }; 
} 

})(); 

니펫을. 이것은 컨트롤러에서 호출되며 결과는 범위에 배치됩니다.

이 코드 조각은 거의 동일하지만 ... working입니다. 이렇게하면 원래 코드에서 다른 점을 찾아 내고 실행하는 데 도움이 될 수 있습니다.

+0

이 코드는 저에게 적합하지 않았습니다. 사실, 나는 의존성 삽입에 대한 어떤 변화도 보지 않았고 Plunkr은 서비스가 아니라 컨트롤러 만 테스트합니다. 서비스가 문제이고 내 컨트롤러가 정상적으로 작동합니다. – user1789573

+0

플 런커와 답변을 업데이트했습니다. 이제는 서비스가 일부 기능을 제공하는 데 사용되고 그 결과는 컨트롤러를 통해 표시됩니다 ... 도움이됩니까? –

+0

좋아, 이것은 좋아 보인다. 그러나 내가 가지고있는 것과 당신이 가지고있는 것의 차이점이 있는지 나는 알 수 없다. 나는 똑같은 방법으로 주사를하고있다. 나는 볼 수 없기 때문에 이것을 실망스럽게 만들고있다. 왜 내가 그 오류를 가져야한다! – user1789573