저는 Angular로 개발하고있는 간단한 응용 프로그램을 가지고 있습니다. 가능한 한 아래를 단순화했습니다. 나는 globally available library injectible (특히 특별한 아무것도)하지 않습니다 시도하고있다 :모듈 간 통신, 각도 Js, 팩토리
내app.module.js
파일은 다음과 같이 간단하게 정의
다음과 같이
angular.module('dogApplication', [
'dogModule',
'dogSelection'
]);
index.html
파일은 정의 (읽기 쉽 냈네) :
<html lang="en" ng-app="dogApplication">
<head>
<!-- ... -->
<script src="app/app.module.js"></script>
<script src="app/dogs/dog.module.js"</script>
<script src="app/dogs/dog.factory.js"</script>
<script src="app/dogSelection.module.js"></script>
<!-- controllers then imported -->
</head>
<body>
<!-- content -->
</body>
</html>
.module
파일은 각 추가 구성 요소, 컨트롤러, 팩토리 등이 첨부 된 모듈을 정의하며 app.module.js
은 "기본"모듈 첨부 파일입니다.
angular
.module('dogModule')
.factory('dog', function($window) {
// do logic defined by James Hill in linked article
return friendly;
});
내가 다음 컨트롤러가 : 다음과 같이
dog.factory.js
angular
.module('dogSelection')
.controller('dogSelectionController', ['$scope', 'dog', function ($scope, dog) {
if (dog)
{
console.log('it worked');
}
}])
가, 나는 싸구려 오류 메시지를 그 나는 확실히 해결할 수 있습니다
를angular.js:13920 Error: [$injector:unpr] Unknown provider: dogProvider <- dog <- dogSelectionController
http://errors.angularjs.org/1.5.8/$injector/unpr?p0=dogProvider%20%3C-%20dog%20%3C-%20dogSelectionController
at angular.js:68
at angular.js:4511
at Object.getService [as get] (angular.js:4664)
at angular.js:4516
at getService (angular.js:4664)
at injectionArgs (angular.js:4688)
at Object.invoke (angular.js:4710)
at $controllerInit (angular.js:10354)
at nodeLinkFn (angular.js:9263)
at angular.js:9673
위의 설정 방식대로은 서비스가 DI를 통해 dogSelectionController
에 제공되지 않습니까?
.factory(//...
메서드의 코드는 제어기 정의의 끝에 첨부 할 수 있으므로이 코드는 잘 작동합니다. 그러나 응용 프로그램에서 사용할 수있는 공장을 원합니다. 이것이 가능한가?
당신은 주입 배열에서'전단지 '로 정의했지만 실제 매개 변수에서는'dog'라고 정의했습니다. 나는 그들이 일하는 것에 부합해야한다고 생각합니다. – Lex
@Lex 그들은 일치 할 필요가 없습니다. 유일한 제한은 문자열의 이름이 – gmustudent
@Lex에서 오는 모듈의 실제 서비스 이름과 일치해야한다는 것입니다.이 오류는 게시 오류입니다. 죄송합니다. 나는 그것을 고쳐야한다.더 널리 적용되도록 노력하고 있습니다. – Thomas