2

我想要一个服务员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:

现在我制作了一个图表来显示结构的外观: 在此处输入图像描述

4

1 回答 1

0

你需要在Feature某处注入,否则它不会被实例化。例如,

app.controller('MainCtrl', function($scope, FeatureRegistry, Feature) {

普朗克

于 2013-03-20T18:22:00.827 回答