Sök…


Syntax

  • konstant (namn, värde);
  • värde (namn, värde);
  • fabrik (namn, $ getFn);
  • service (namn, konstruktör);
  • leverantör (namn, leverantör);

Anmärkningar

Tillhandahållare är singleton-objekt som kan injiceras, till exempel, i andra tjänster, styrenheter och direktiv. Alla leverantörer är registrerade med olika "recept", där Provider är den mest flexibla. Alla möjliga recept är:

  • Konstant
  • Värde
  • Fabrik
  • Service
  • provider

Tjänster, fabriker och leverantörer är alla lata initialiserade, komponenten initialiseras endast om applikationen beror på det.

Dekoratörer är nära besläktade med leverantörer. Dekoratörer används för att fånga upp tjänster eller skapa fabriker för att ändra dess beteende eller åsidosätta (delar av) den.

Konstant

Constant finns både i konfigurations- och körfaser.

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>

slutpunkt = http: //some.rest.endpoint

Värde

Value är tillgängligt både i konfigurations- och körfaser.

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>

slutpunkt = http: //some.rest.endpoint

Fabrik

Factory finns i körfasen.

Fabriksreceptet konstruerar en ny tjänst med en funktion med noll eller fler argument (det här är beroenden av andra tjänster). Returvärdet för denna funktion är den serviceinstans som skapas av detta recept.

Fabriken kan skapa en tjänst av vilken typ som helst, oavsett om det är en primitiv, objektlig bokstavsfunktion, funktion eller till och med en instans av en anpassad typ.

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>

slutpunkt = http: //some.rest.endpoint

Service

Service är tillgänglig i körfasen.

Servicereceptet producerar en tjänst precis som Value eller Factory-recept, men det gör det genom att åberopa en konstruktör med den nya operatören . Konstruktören kan ta noll eller fler argument, som representerar beroenden som behövs av instansen av denna typ.

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>

slutpunkt = http: //some.rest.endpoint

provider

Provider är tillgänglig både i konfigurations- och körfaser.

Provider-receptet definieras syntaktiskt som en anpassad typ som implementerar en $get metod.

Du bör bara använda leverantörsreceptet om du vill avslöja ett API för applikationsomfattande konfiguration som måste göras innan applikationen startar. Detta är vanligtvis intressant endast för återanvändbara tjänster vars beteende kan behöva variera något mellan applikationer.

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>

slutpunkt = http: //some.rest.endpoint

Utan config skulle resultatet bli

slutpunkt = n / a



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow