サーチ…


構文

  • 定数(名前、値)。
  • 値(名前、値)。
  • 工場(名前、$ getFn);
  • サービス(名前、コンストラクタ)。
  • プロバイダ(名前、プロバイダ)。

備考

プロバイダは、例えば、他のサービス、コントローラ、および指令に注入できるシングルトンオブジェクトです。すべてのプロバイダは、異なる「レシピ」を使用して登録されていProviderProviderは、最も柔軟性の高いものです。すべての可能なレシピは:

  • 定数
  • 工場
  • サービス
  • プロバイダ

サービス、ファクトリ、プロバイダはすべて遅延初期化され、コンポーネントはアプリケーションが依存している場合にのみ初期化されます。

デコレータはプロバイダと密接に関連しています。デコレータは、サービスの動作やファクトリの作成を傍受したり、その動作を変更したりするために使用されます。

定数

Constantは、コンフィギュレーションフェーズと実行フェーズの両方で使用できます。

angular.module('app',[])
  .constant('endpoint', 'http://some.rest.endpoint') // define
  .config(function(endpoint) {
    // do something with endpoint
    // available in both config- and run phases
  }) 
  .controller('MainCtrl', function(endpoint) {       // inject
    var vm = this;
    vm.endpoint = endpoint;                          // usage
  });

<body ng-controller="MainCtrl as vm">
  <div>endpoint = {{ ::vm.endpoint }}</div>
</body>

エンドポイント= http://some.rest.endpoint

Valueは、構成フェーズと実行フェーズの両方で使用できます。

angular.module('app',[])
  .value('endpoint', 'http://some.rest.endpoint') // define
  .run(function(endpoint) {
    // do something with endpoint
    // only available in run phase
  }) 
  .controller('MainCtrl', function(endpoint) {    // inject
    var vm = this;
    vm.endpoint = endpoint;                       // usage
  }); 

<body ng-controller="MainCtrl as vm">
  <div>endpoint = {{ ::vm.endpoint }}</div>
</body>

エンドポイント= http://some.rest.endpoint

工場

Factoryは運転段階で利用可能です。

Factoryレシピは、0個以上の引数を持つ関数を使用して新しいサービスを構築します(これらは他のサービスに依存します)。この関数の戻り値は、このレシピによって作成されたサービスインスタンスです。

ファクトリは、プリミティブ、オブジェクトリテラル、関数、またはカスタムタイプのインスタンスであっても、あらゆるタイプのサービスを作成できます。

angular.module('app',[])
  .factory('endpointFactory', function() {
    return {
      get: function() {
        return 'http://some.rest.endpoint';
      }
    };
  })
  .controller('MainCtrl', function(endpointFactory) {
    var vm = this;
    vm.endpoint = endpointFactory.get();
  });

<body ng-controller="MainCtrl as vm">
  <div>endpoint = {{::vm.endpoint }}</div>
</body>

エンドポイント= http://some.rest.endpoint

サービス

Serviceは実行段階で利用可能です。

サービスレシピは、値レシピまたは工場レシピと同じようにサービスを作成しますが、新しいオペレータでコンストラクタを呼び出すことによってサービスレシピが作成されます。コンストラクタは、この型のインスタンスに必要な依存関係を表す0つ以上の引数を取ることができます。

angular.module('app',[])
  .service('endpointService', function() {
    this.get = function() {
      return 'http://some.rest.endpoint';
    };
  })
  .controller('MainCtrl', function(endpointService) {
    var vm = this;
    vm.endpoint = endpointService.get();
  });

<body ng-controller="MainCtrl as vm">
  <div>endpoint = {{::vm.endpoint }}</div>
</body>

エンドポイント= http://some.rest.endpoint

プロバイダ

Providerは、構成フェーズと実行フェーズの両方で利用できます。

プロバイダレシピは、 $getメソッドを実装するカスタム型として構文的に定義されています。

プロバイダレシピは、アプリケーションを起動する前に行わなければならないアプリケーション全体の設定用にAPIを公開する場合にのみ使用する必要があります。これは通常、アプリケーション間で動作がわずかに異なる必要がある再利用可能なサービスに対してのみ面白いです。

angular.module('app',[])
  .provider('endpointProvider', function() {
    var uri = 'n/a';
    
    this.set = function(value) {
      uri = value;
    };

    this.$get = function() {
      return {
        get: function() {
          return uri;
        }
      };
    };
  })
  .config(function(endpointProviderProvider) {
    endpointProviderProvider.set('http://some.rest.endpoint');
  })   
  .controller('MainCtrl', function(endpointProvider) {
    var vm = this;
    vm.endpoint = endpointProvider.get();
  }); 

<body ng-controller="MainCtrl as vm">
  <div>endpoint = {{::vm.endpoint }}</div>
</body>

エンドポイント= http://some.rest.endpoint

configフェーズなしでは結果は

終点= n / a



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow