Suche…


Syntax

  • Konstante (Name, Wert);
  • Wert (Name, Wert);
  • factory (name, $ getFn);
  • Dienst (Name, Konstruktor);
  • Anbieter (Name, Anbieter);

Bemerkungen

Provider sind Einzelobjekte, die zum Beispiel in andere Dienste, Controller und Anweisungen eingefügt werden können. Alle Anbieter werden mit unterschiedlichen "Rezepten" registriert, wobei Provider der flexibelste ist. Alle möglichen Rezepte sind:

  • Konstante
  • Wert
  • Fabrik
  • Bedienung
  • Anbieter

Dienste, Fabriken und Anbieter werden nur langsam initialisiert. Die Komponente wird nur dann initialisiert, wenn die Anwendung davon abhängig ist.

Dekorateure sind eng mit Anbietern verbunden. Dekorateure dienen dazu, Service- oder Fabrikerstellungen abzufangen, um ihr Verhalten zu ändern oder (Teile davon) zu überschreiben.

Konstante

Constant ist sowohl in der Konfigurations- als auch in der Ausführungsphase verfügbar.

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>

Endpunkt = http: //some.rest.endpoint

Wert

Value ist sowohl in der Konfigurations- als auch in der Ausführungsphase verfügbar.

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>

Endpunkt = http: //some.rest.endpoint

Fabrik

Factory ist in der Run-Phase verfügbar.

Das Factory-Rezept erstellt einen neuen Service unter Verwendung einer Funktion mit null oder mehr Argumenten (dies sind Abhängigkeiten von anderen Services). Der Rückgabewert dieser Funktion ist die Serviceinstanz, die mit diesem Rezept erstellt wurde.

Factory kann einen Dienst eines beliebigen Typs erstellen, sei es ein Primitiv, ein Objektliteral, eine Funktion oder sogar eine Instanz eines benutzerdefinierten Typs.

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>

Endpunkt = http: //some.rest.endpoint

Bedienung

Service ist in der Run-Phase verfügbar.

Das Service-Rezept erzeugt einen Service genauso wie die Value- oder Factory-Rezepte, jedoch durch Aufruf eines Konstruktors mit dem neuen Operator . Der Konstruktor kann null oder mehr Argumente annehmen, die die von der Instanz dieses Typs benötigten Abhängigkeiten darstellen.

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>

Endpunkt = http: //some.rest.endpoint

Anbieter

Provider ist sowohl in der Konfigurations- als auch in der Ausführungsphase verfügbar.

Das Provider-Rezept ist syntaktisch als benutzerdefinierter Typ definiert, der eine $get Methode implementiert.

Sie sollten das Anbieterrezept nur verwenden, wenn Sie eine API für die anwendungsweite Konfiguration verfügbar machen möchten, die vor dem Start der Anwendung erstellt werden muss. Dies ist normalerweise nur für wiederverwendbare Dienste interessant, deren Verhalten zwischen den Anwendungen möglicherweise geringfügig variieren muss.

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>

Endpunkt = http: //some.rest.endpoint

Ohne config wäre das Ergebnis

Endpunkt = n / a



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow