Alt, hvad du behøver at vide om Factory i AngularJS

AngularJS tilbyder tjenester, som er genanvendelige singleton-objekter. De kan bruges til at dele koden på tværs af brugernes AngularJS-applikationer. De kan også injiceres i direktiver, filtre og controllere. I denne artikel vil vi forstå factory i AngularJS.

  • Hvad er Factory i AngularJS?
  • Forskellen mellem service og Factory
  • Eksempel på Factory i JavaScript

Hvad er Factory i AngularJS?

Factory er en angular-funktion, der bruges til at returnere værdierne. En værdi on demand oprettes af fabrikken, når en tjeneste eller controller har brug for den. Når værdien er oprettet, genbruges den til alle tjenester og controllere.

Angular Logo - Factory i AngularJS

Vi kan bruge fabrikken til at oprette en tjeneste.

Forskellen mellem service og factory

  • En service kan defineres på følgende måde:

app.service('FirstService', function () {

this.sayHola = function () {

console.log('Hola');

};

});

The .service() method takes the name and the function that defines the service. We can inject it in the following way:

app.controller('AppController', function (FirstService) {

FirstService.sayHola(); // logs 'Hola'

});

  • En fabrik, kan på den anden side defineres på følgende måde:

app.factory('FirstService', function () {

return {

sayHola: function () {

console.log('Hola');

}

}

}

});

factory() er også en metode, der tager et navn og en funktion, som definerer fabrikken. Vi kan injicere den på samme måde som at injicere en tjeneste. Den store forskel mellem en tjeneste og en factory er, at vi returnerer en objektlitterær i tilfælde af factory (i stedet for at bruge this). Årsagen er, at service er en konstruktørfunktion, mens en factory ikke er det.

  • For en bedre forståelse tager vi et kig på factory-funktionen():

function factory(name, factFn, enforce) {

return provider(name, {

$get: enforce !== false ? enforceReturnValue(name, factFn) : factFn

});

}

I den ovenfor angivne kode tager den navnet og den overgivne factory-funktion. Den returnerer en udbyder med samme navn sammen med en $get metode(som er fabriksfunktionen) . Dette skyldes, at når injektoren bliver bedt om en bestemt afhængighed, beder injektoren provideren om en instans af den pågældende tjeneste ved at kalde $get()-metoden.

  • Ved injektion af FirstService bliver fabriksfunktionerne kaldt:

FirstServiceProvider.$get(); // return the instance of the service

  • For tjenestekoden:

function service(name, constructor) {

return factory(name, );

}

Når vi kalder service(), factory() er det den, der faktisk bliver kaldt. Det sker ved at overdrage en funktion, der beder injektoren om at instantiere et objekt ved hjælp af konstruktøren. I enklere vendinger kalder service en foruddefineret fabrik.

$injector.instantiate() kalder Object.create() med konstruktorfunktionen. Det er derfor, at dette bruges i tjenester.

Eksempel på Factory i JavaScript

var firstModule = angular.module("firstModule", );

firstModule.factory("firstFactory", function() {

return "a value";

});

});

firstModule.controller("FirstController", function($scope, firstFactory) {

console.log(firstFactory);

});

Injicering af værdier i factory

En værdi kan injiceres i factory ved hjælp af følgende metode:

var firstModule = angular.module("firstModule", );

firstModule.value("numberValue", 29);

firstModule.controller("FirstController", function($scope, numberValue) {

console.log(numberValue);

});

BEMÆRK: Det skal bemærkes, at det er den værdi, der produceres af fabriksfunktionen, der injiceres, og ikke selve fabriksfunktionen.

Med dette kommer vi til en afslutning på denne artikel om Factory i AngularJS. Jeg håber, at du fik en forståelse af, hvad der præcist er en fabrik, og hvordan den adskiller sig fra en service.

Tjek Angular-træningen af Edureka, et betroet online læringsfirma med et netværk af mere end 250.000 tilfredse elever spredt over hele verden. Angular er en JavaScript-ramme, som bruges til at skabe skalerbare, virksomheds- og ydelsesbaserede klient-side webapplikationer. Da Angular-rammen er meget udbredt, er ydelsesstyring af applikationen fællesskabsdrevet, hvilket indirekte fører til bedre jobmuligheder. Angular Certification Training har til formål at dække alle disse nye koncepter omkring Enterprise Application Development.

Skriv en kommentar