스토리지 공급자 용 시스템을 설치 중입니다.AngularJS 동적 종속성 주입
이런 식으로 구성되어angular.module('mooseGarden').provider('storage', function() {
var storage = this;
var driverName;
this.setDriverName = function(name) {
driverName = name;
return storage;
};
this.getDriverName = function() {
return driverName;
};
this.$get = [driverName, function(driver) {
return {
set: function(key, value) {
driver.set(key, value);
},
get: function(key) {
driver.get(key);
}
};
}];
});
:
app.config(['storageProvider', function(storageProvider) {
storageProvider.setDriverName('StorageDriver_LocalStorage');
}]);
StorageDriver_LocalStorage
는 응용 프로그램에서 다른 곳에 정의
내가
은 아주 기본적인 스토리지 제공 업체가 있습니다.공급자
당신은 서비스가 주입으로 설정 변수 driverName
을 알 수 있습니다. 드라이버가 Angular 애플리케이션의 서비스가되기를 바랍니다. 그것이 제공하는 "깨끗하고 아름다운"방법을 넘어, 나는 또한 다른 모듈에서 가져올 수있는 드라이버를 원하며 프로그래밍 방식으로 사용할 드라이버로 정의합니다.
이 설정의 문제점은 무엇입니까?
storageProvider
은 구성 블록의 종속 관계입니다. 나는 제공자가 객체와 같이 로딩 될 것을 기대했으나 $get
메쏘드가 아닌 각도 서비스가 될 것을 기대했다. 그런 경우가 아니기 때문에 $get
이 호출됩니다. 드라이버 서비스가 공급자의 종속성이되어 응용 프로그램이 작동하지 않습니다.
공급자의 전체 목적은 사용하기 전에 구성 할 수 있다는 것이기 때문에 약간의 어리 석음이 있지만 아직 인스턴스화하지 않고는 가져올 수 없기 때문에 약간 바보입니다. 나는 어딘가에서 혼란스럽게 생각한다. ...
누군가는 이것을 해결하는 방법을 알고 있냐?
이 방법을 시도해 보았습니다. 나는'storageProvider.setDriverName ('StorageDriver_LocalStorage');에서 드라이버 이름을 잘못 썼다. – JesusTheHun