Я хорошо знаком с инъекцией зависимостей и инверсией управления на разных языках и в качестве понятий. Тем не менее, я не могу придумать шаблон, подобный приведенному ниже примеру, используя лучшие методы AngularJS.Зависимость впрыска и инверсия управления в AngularJS
Я пытаюсь создать реестр объектов, в котором объекты могут быть добавлены и извлечены позже ключом.
function (angular) {
'use strict';
angular.module('sample')
.service('ObjectRegistry', function() {
var members = [];
this.addMember = function(key, object) {
members[key] = object;
}
this.getMember = function(key) {
return members[key] || {};
}
})
.service('ObjectInstance', [ 'ObjectRegistry', function (ObjectRegistry) {
this.doSomething = function() {};
ObjectRegistry.addMember("my-key", this);
}])
.controller('MyController', [ 'ObjectRegistry', function (ObjectRegistry) {
// Here I need to get ObjectRegistry populated with all services that register themselves in the registry, in this example, with ObjectInstance under the key "my-key"
});
}(angular));
Вопрос заключается в том, что ObjectRegistry никогда не заполняется, так как ObjectInstance никогда не инициализируется (и я не хочу, чтобы сделать из контроллера).
Что было бы лучшим подходом для достижения этого в угловом? Я знаком, например, с контейнером DI-контейнера Symfony и компиляторами, которые позволяют реплицировать этот шаблон, но я не слишком уверен в том, как идти на него с DI-модулем Angular.
Почему вам нужен второй реестр? – zeroflagL
Многие причины, текущий вариант использования - это нечто похожее на реестр плагинов. –