私のストレージプロバイダ用のドライバシステムをセットアップしています。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);
}
};
}];
});
:StorageDriver_LocalStorage
がアプリケーションのどこかに定義されて
app.config(['storageProvider', function(storageProvider) {
storageProvider.setDriverName('StorageDriver_LocalStorage');
}]);
を。
プロバイダ
あなたは注入するサービスとして設定されている変数driverName
に気づきます。ドライバーがAngularアプリケーションのサービスになるようにしたい。それがもたらす「きれいで美しい」方法を超えて、私はまた、それらのドライバを他のモジュールからインポートし、使用するドライバとしてプログラム的に定義することを望んでいます。
この設定の問題点は何ですか?
storageProvider
は、コンフィグブロックの依存関係です。私はプロバイダがオブジェクトのようにロードされることを期待しました/ $get
メソッドは呼び出されません。 そうでない場合は、$get
が呼び出されます。ドライバサービスは、プロバイダの依存関係であり、アプリケーションが停止しています。
プロバイダの目的はすべて、使用前に設定できるということですが、インスタンス化せずに取得することはできないため、これはちょっとばかりです。私はどこかに混乱していると思う...
誰もこれを解決する方法を知っていますか?
この方法を試してみました。私は 'storageProvider.setDriverName( 'StorageDriver_LocalStorage');でドライバ名のスペルを間違えてしまった。 – JesusTheHun