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 を調べると。

私は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 に答える