Allt du behöver veta om Factory i AngularJS

AngularJS tillhandahåller tjänster som är återanvändbara singletonobjekt. De kan användas för att dela koden mellan användarnas AngularJS-applikationer. De kan också injiceras i direktiv, filter och controllers. I den här artikeln kommer vi att förstå fabriken i AngularJS.

  • Vad är fabrik i AngularJS?
  • Skillnaden mellan tjänst och fabrik
  • Exempel på fabrik i JavaScript

Vad är fabrik i AngularJS?

Fabrik är en Angular-funktion som används för att returnera värden. Ett värde på begäran skapas av fabriken när en tjänst eller controller behöver det. När värdet har skapats återanvänds det för alla tjänster och styrenheter.

Angular Logo - Factory i AngularJS

Vi kan använda fabriken för att skapa en tjänst.

Skillnaden mellan tjänst och fabrik

  • En tjänst kan definieras på följande sätt:

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 å andra sidan definieras på följande sätt:

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

return {

sayHola: function () {

console.log('Hola');

}

}

});

factory() är också en metod som tar ett namn och en funktion som definierar fabriken. Vi kan injicera den på samma sätt som vi injicerar en tjänst. Den stora skillnaden mellan en tjänst och en factory är att vi returnerar en objektlitterär i fallet factory (istället för att använda this). Anledningen är att tjänsten är en konstruktorfunktion medan en fabrik inte är det.

  • För en bättre förståelse tar vi en titt på fabriksfunktionen():

function factory(name, factFn, enforce) {

return provider(name, {

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

});

}

I koden som ges ovan tar den emot namnet och den överlämnade fabriksfunktionen. Den returnerar en provider med samma namn, tillsammans med en $get metod (som är fabriksfunktionen) . Detta beror på att närhelst injektorn ombeds att ange ett visst beroende frågar injektorn leverantören efter en instans av den tjänsten genom att anropa $get()-metoden.

  • När FirstService injiceras anropas fabriksfunktionerna:

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

  • För tjänstens kod:

function service(name, constructor) {

return factory(name, );

}

När vi anropar service(), factory() är det den som faktiskt anropas. Detta görs genom att överlämna en funktion som ber injektorn att instantiera ett objekt med hjälp av konstruktorn. Förenklat kan man säga att tjänsten anropar en fördefinierad fabrik.

$injector.instantiate() anropar Object.create() med konstruktorfunktionen. Det är därför detta används i tjänster.

Exempel 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);

});

Injicera värden i fabriken

Ett värde kan injiceras i fabriken med följande metod:

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

firstModule.value("numberValue", 29);

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

console.log(numberValue);

});

OBS: Det måste noteras att det är värdet som produceras av fabriksfunktionen som injiceras, inte själva fabriksfunktionen.

Med detta avslutar vi den här artikeln om Factory i AngularJS. Jag hoppas att du fick en förståelse för vad exakt en fabrik är och hur den skiljer sig från en tjänst.

Kolla in Angular-utbildningen från Edureka, ett pålitligt online-utbildningsföretag med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Angular är ett JavaScript-ramverk som används för att skapa skalbara, företagsanpassade och prestandakänsliga klientsidiga webbapplikationer. Eftersom Angular-ramverket används i stor utsträckning är prestandahanteringen av applikationen gemenskapsdriven, vilket indirekt leder till bättre jobbmöjligheter. Angular-certifieringsutbildningen syftar till att täcka alla dessa nya begrepp kring utveckling av företagsapplikationer.

Lämna en kommentar