컨트롤러에 동적으로 의존하는 $inject 방법
난 아직 Angularjs 데뷔작이야컨트롤러에 (생성한) 서비스의 종속성을 동적으로 주입합니다.
그러나 종속성을 사용하여 서비스를 코드화하면 다음 오류가 발생합니다.
오류: 알 수 없는 공급자: $windowProvider <-$window <-base64
이것은 컨트롤러의 코드입니다.
var base64 = angular.injector(['servicesModule']).get('base64');
console.log("base64", base64.encode("my text will be encoded"));
이 코드는 동작합니다.
var servicesModule = angular.module('servicesModule', []);
servicesModule.factory('base64', function() {
return {
name: 'base64',
readonly: false,
encode: function(input) {
return window.btoa(input);
},
decode: function(input) {
return window.atob(input);
}
};
});
이 코드는 동작하지 않습니다.
var extModule = angular.module('ext', []);
extModule.factory('base64', ['$window', function($window) {
return {
name: 'base64',
readonly: false,
encode: function(input) {
return $window.btoa(input);
},
decode: function(input) {
return $window.atob(input);
}
};
}]);
또 다른 문제는 서비스가 컨트롤러와 같은 모듈 내에 있는 경우입니다.모듈에 종속성이 있는 경우 작동하지 않습니다(모듈 설정에 $routeProvider 종속성이 있습니다).
오류: 알 수 없는 공급자: mainModule의 $routeProvider
var mainModule = angular.module('main', [],
function($routeProvider, $locationProvider) {
//Some routing code
}
);
JS 피들
종속성이 있는 동일한 모듈(컨트롤러+서비스):http://jsfiddle.net/yrezgui/YedT2/
종속성이 있는 다른 모듈: http://jsfiddle.net/yrezgui/YedT2/4/
의존관계가 없는 다른 모듈:http://jsfiddle.net/yrezgui/YedT2/5/
앵귤러라고 하지 마.injector() -- 새 인젝터가 생성됩니다.대신, 이미 작성된 것을 주입합니다.$injector를 컨트롤러에 삽입하여 사용합니다.
그래서 다음 대신:
var algoController = function($scope) {
$scope.base64 = angular.injector(['main']).get('base64');
};
다음을 수행합니다.
var algoController = function($scope, $injector) {
$scope.base64 = $injector.get('base64');
};
그러나 대부분의 경우 다음과 같이 서비스를 동적으로 주입하지 않고 직접 주입해야 합니다.
var algoController = function($scope, base64) {
$scope.base64 = base64;
};
'각'도 참조JS는 스코프 또는 컨트롤러를 동적으로 주입합니다.
언급URL : https://stackoverflow.com/questions/12758157/how-to-inject-dynamically-dependence-in-a-controller
'programing' 카테고리의 다른 글
| 단일 페이지 응용 프로그램에서 응용 프로그램 버전 변경 감지 (0) | 2023.02.23 |
|---|---|
| Opcache에서 memcached가 필요합니까? (0) | 2023.02.23 |
| Oracle SQL 개발자 도구에서 .sql 파일을 실행하여 데이터베이스를 가져오려면 어떻게 해야 합니까? (0) | 2023.02.23 |
| JSON 데이터에 대한 SQL 유사 쿼리를 허용하는 Javascript 라이브러리 (0) | 2023.02.23 |
| WordPress 3.5 미디어 매니저를 열 때 이미지 사전 선택 (0) | 2023.02.23 |