我为我的存储提供者设置了一个驱动程序系统。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
被调用。驱动程序服务是提供程序的依赖项,该应用程序被卡住了。
我觉得这是一个有点傻,因为供应商的整个目的是,它可以在使用前进行配置,但如果没有实例化,你不能让他们。我觉得我有些困惑...
有谁知道如何解决这个问题?
我试过这种方法,它工作。我在'storageProvider.setDriverName('StorageDriver_LocalStorage');'...拼写错误' – JesusTheHun