我想要一个服务员FeatureRegistry
,所有的功能都在他那里注册。注册功能依赖于 FeatureRegistry(反之亦然)。
我现在的做法是:
angular.module('app').factory('FeatureRegistry', function(){
var FeatureRegistry = new Object();
FeatureRegistry.features = new Array();
FeatureRegistry.registerFeature = function(feature){
FeatureRegistry.features.push(feature);
}
return FeatureRegistry;
}
angular.module('app').factory('Feature', function(FeatureRegistry){
var Feature = new Object();
FeatureRegistry.registerFeature(Feature);
return Feature;
}
但该功能似乎从未注册过。如果我在 FeatureRegistry 中查找 features.
我用 FeatureController 对其进行了测试:
angular.module('app').controller('FeatureController',
function($scope, FeatureRegistry){
$scope.features = FeatureRegistry.features;
return this; // not sure if a return is necessary
}
编辑:
所以现在我知道服务是延迟加载的,只有在注入时才会实例化。但这对于我想要实现的应用程序是违反直觉的,因为这些功能应该位于单独的文件和文件夹中,并且我不想在FeatureRegistry
任何时候更改添加新功能的依赖关系。
编辑2:
现在我制作了一个图表来显示结构的外观: