Zoeken…


Syntaxis

  • constant (naam, waarde);
  • waarde (naam, waarde);
  • fabriek (naam, $ getFn);
  • service (naam, constructor);
  • provider (naam, provider);

Opmerkingen

Providers zijn singleton-objecten die bijvoorbeeld kunnen worden geïnjecteerd in andere services, controllers en richtlijnen. Alle providers worden geregistreerd met behulp van verschillende "recepten", waarbij Provider de meest flexibele is. Alle mogelijke recepten zijn:

  • Constante
  • Waarde
  • Fabriek
  • Onderhoud
  • leverancier

Services, fabrieken en providers zijn allemaal lui geïnitialiseerd, component wordt alleen geïnitialiseerd als de toepassing ervan afhankelijk is.

Decorateurs zijn nauw verwant aan Providers. Decorateurs worden gebruikt om service of fabriekscreatie te onderscheppen om het gedrag te veranderen of (delen van) het te vervangen.

Constante

Constant is beschikbaar in zowel configuratie- als uitvoeringsfasen.

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>

eindpunt = http: //some.rest.endpoint

Waarde

Value is beschikbaar in zowel configuratie- als uitvoeringsfasen.

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>

eindpunt = http: //some.rest.endpoint

Fabriek

Factory is beschikbaar in run-fase.

Het fabrieksrecept maakt een nieuwe service met behulp van een functie met nul of meer argumenten (dit zijn afhankelijkheden van andere services). De retourwaarde van deze functie is het service-exemplaar dat door dit recept is gemaakt.

Factory kan van elk type een service maken, of het nu een primitieve, letterlijke object, functie of zelfs een exemplaar van een aangepast type is.

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>

eindpunt = http: //some.rest.endpoint

Onderhoud

Service is beschikbaar in de run-fase.

Het servicerecept produceert een service net zoals de recepten Waarde of Fabriek, maar het doet dit door een constructor met de nieuwe operator aan te roepen . De constructor kan nul of meer argumenten aannemen, die afhankelijkheden vertegenwoordigen die nodig zijn voor de instantie van dit type.

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>

eindpunt = http: //some.rest.endpoint

leverancier

Provider is beschikbaar in zowel configuratie- als run-fasen.

Het Provider-recept is syntactisch gedefinieerd als een aangepast type dat een $get methode implementeert.

Gebruik het Provider-recept alleen als u een API wilt vrijgeven voor applicatie-brede configuratie die moet worden gemaakt voordat de applicatie start. Dit is meestal alleen interessant voor herbruikbare services waarvan het gedrag mogelijk enigszins moet variëren tussen applicaties.

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>

eindpunt = http: //some.rest.endpoint

Zonder config zou het config zijn

eindpunt = n.v.t.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow