2014-11-19 3 views
0

각도 js 모듈의 서비스를 주 컨트롤러로 주입하는 데 문제가 있습니다. ? 나는이 오류가 무엇입니까 : https://docs.angularjs.org/error/ $ 인젝터/unpr P0 = aProvider % 20 % 3C- % 20A의 % 20 % 3C- %의 20solrquery을Angular JS Service 다른 모듈의 DI

내 코드는 다음과 같습니다 :

var app = angular.module('app1',[ 
    'solr' 
    ]); 

app.controller('app1cont', ['$scope', 'solrquery', function($scope,solrquery){ 
    console.log("Start"); 
    $scope.value = 1; 
    solrquery('aaa'); 

}]); 

SOLR 모듈처럼 보인다 이 :

var solr1 = angular.module('solr', []); 

solr1.run(function(){ 
    console.log("Module Loaded"); 
}); 

solr1.service('solrquery',function(a) { 
    console.log('searching for: ' + a); 
} 
); 

실행할 때로드 된 모듈이 콘솔에 표시되고 오류가 발생합니다. app.controller와 solrquery ('aaa')에서 주입을 제거하면; 코드가 잘 돌아갑니다 ... 이미 몇 시간을 보냈으니 어떤 도움을 주시면 감사하겠습니다.

미리 감사드립니다.

편집 : 코드를 다시 작업 후 답변 안토니

덕분에, 모듈은 다음과 같습니다

var solr1 = angular.module('solr', []); 

solr1.run(function(){ 
    console.log("Module Loaded"); 
}); 
//as a factory 
solr1.factory('solrquery',function() { 
    return function(a) { 
     console.log('searching for: ' + a); 
    } 
} 
); 
//as a service 
solr1.service('solrser', function() { 
    this.test = function(a) { 
     console.log(a); 
    } 
}); 

그리고 컨트롤러 : var에 응용 = angular.module를 (' app1 ', [ 'solr ' ]);

app.controller('app1cont', ['$scope', 'solrquery', 'solrser', function($scope,solrquery,solrser){ 
    console.log("Start"); 
    $scope.value = 1; 
    solrquery('a'); 
    solrser.test('a'); 

}]); 

답변

1

서비스에 주입하기 위해 a이라는 것을 찾고 있기 때문에 인젝터가 불평하고 있습니다. 당신은 ... 함수를 반환하는 공장 solrquery을 변경하여

solr1.factory('solrquery', function() { 
    return function (a) { 
     console.log('searching for: ' + a); 
    }; 
}); 

Live Demo

기술적으로 여전히 서비스로 떠나는 것이 작동합니다,하지만 정말이되어야 뭔가를 반환하는 함수를이 문제를 해결할 수 있습니다 공장.

+0

안녕하세요. Anthony, 감사합니다. 저는 공장 예를 사용하고 있습니다. 그러나 다른 모듈의 서비스를 추가하는 방법을 알려주시겠습니까? 모듈에서가 아니라 앱 수준에서 선언 된 DI 서비스를 사용할 수 있습니다. 다시 한 번 감사드립니다 – browskie

+0

절대 신경 쓰지 마세요. – browskie

0

그 angularjs.org 오류 링크는 문제가 무엇인지 알려줍니다.

Unknown provider: aProvider <- a <- solrquery

각도의 인젝터는 solrquery 서비스에 대한 함수 매개 변수에 지정된 a라는 종속성을 찾고있다 :

solr1.service('solrquery',function(a) {

서비스 정의는 재 작업해야합니다. 이것은 서비스 정의 방법에 대한 좋은 참고 자료입니다 : angular.service vs angular.factory.

+0

다시 작업해야 할 필요가 있음을 알고 있습니다. 수정 단계를 제공하지 않고 분명한 사실을 밝히기 만하면 게시물이 어지럽 힙니다. – browskie