Я настраиваю систему драйвера для своего поставщика хранилища.Угловая динамическая зависимость 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
, который устанавливается в качестве службы впрыснуть. Я хочу, чтобы водители были сервисами в Угловом приложении; помимо «чистого и красивого» способа, который он приносит, я также хочу, чтобы эти драйверы были импортированы из других модулей и программно определены как драйвер для использования.
В чем проблема с этой настройкой?
storageProvider
является зависимостью config блок. Я ожидал, что провайдер будет загружен как объект/не угловая служба, а не метод $get
. Это не так, $get
называется. Служба драйвера, являющаяся зависимостью провайдера, приложение застревает.
Я нахожу это немного глупым, потому что вся цель провайдера заключается в том, что его можно настроить перед использованием, но вы не можете получить их без создания экземпляра. Я думаю, что я где-то запутался ...
Кто-нибудь знает, как это решить?
Я пробовал этот подход, и он работает. Я ошибся с именем драйвера в 'storageProvider.setDriverName ('StorageDriver_LocalStorage');' ... позорить меня – JesusTheHun