Ricerca…


Sintassi

  • costante (nome, valore);
  • valore (nome, valore);
  • factory (nome, $ getFn);
  • servizio (nome, costruttore);
  • fornitore (nome, fornitore);

Osservazioni

I provider sono oggetti singoli che possono essere iniettati, ad esempio, in altri servizi, controller e direttive. Tutti i fornitori sono registrati utilizzando diverse "ricette", in cui il Provider è il più flessibile. Tutte le ricette possibili sono:

  • Costante
  • Valore
  • Fabbrica
  • Servizio
  • Provider

I servizi, le fabbriche e i provider sono tutti inizializzati in modo pigro, il componente viene inizializzato solo se l'applicazione dipende da esso.

I decoratori sono strettamente legati ai fornitori. I decoratori sono utilizzati per intercettare il servizio o la creazione della fabbrica al fine di cambiarne il comportamento o sostituirlo (parti di esso).

Costante

Constant è disponibile sia in fase di configurazione che di esecuzione.

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>

endpoint = http: //some.rest.endpoint

Valore

Value è disponibile sia nella configurazione che nelle fasi di esecuzione.

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>

endpoint = http: //some.rest.endpoint

Fabbrica

Factory è disponibile in fase di esecuzione.

La ricetta Factory costruisce un nuovo servizio utilizzando una funzione con zero o più argomenti (dipendono da altri servizi). Il valore di ritorno di questa funzione è l'istanza di servizio creata da questa ricetta.

Factory può creare un servizio di qualsiasi tipo, sia esso un primitivo, oggetto letterale, funzione, o anche un'istanza di un tipo personalizzato.

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>

endpoint = http: //some.rest.endpoint

Servizio

Service è disponibile in fase di esecuzione.

La ricetta del servizio produce un servizio proprio come le ricette Valore o Fabbrica, ma lo fa invocando un costruttore con il nuovo operatore . Il costruttore può accettare zero o più argomenti, che rappresentano le dipendenze richieste dall'istanza di questo tipo.

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>

endpoint = http: //some.rest.endpoint

Provider

Provider è disponibile sia in fase di configurazione che di esecuzione.

La ricetta del provider è sintatticamente definita come un tipo personalizzato che implementa un metodo $get .

È necessario utilizzare la ricetta Provider solo quando si desidera esporre un'API per la configurazione a livello di applicazione che deve essere eseguita prima dell'avvio dell'applicazione. Questo di solito è interessante solo per i servizi riutilizzabili il cui comportamento potrebbe dover variare leggermente tra le applicazioni.

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>

endpoint = http: //some.rest.endpoint

Senza risultati di fase di config sarebbe

endpoint = n / a



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow