Vše, co potřebujete vědět o Factory v AngularJS

AngularJS poskytuje služby, které jsou opakovaně použitelné singletonové objekty. Lze je použít ke sdílení kódu napříč uživatelskými aplikacemi AngularJS. Lze je také injektovat do direktiv, filtrů a kontrolérů. V tomto článku pochopíme, co je to továrna v AngularJS.

  • Co je to továrna v AngularJS?
  • Rozdíl mezi službou a továrnou
  • Příklad továrny v JavaScriptu

Co je to továrna v AngularJS?

Továrna je angulární funkce, která slouží k vracení hodnot. Továrna vytvoří hodnotu na vyžádání, kdykoli ji služba nebo kontrolér potřebuje. Jakmile je hodnota vytvořena, je znovu použita pro všechny služby a kontroléry.

Angular Logo - Factory v AngularJS

Továrnu můžeme použít k vytvoření služby.

Rozdíl mezi službou a továrnou

  • Službu lze definovat následujícím způsobem:

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'

});

  • Továrna, lze naopak definovat následujícím způsobem:

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

return {

sayHola: function () {

console.log('Hola');

}

}

});

factory() je také metoda, která přebírá jméno a funkci definující továrnu. Můžeme ji injektovat stejným způsobem jako injektování služby. Hlavní rozdíl mezi službou a továrnou je v tom, že v případě továrny vracíme literál objektu (místo použití this). Důvodem je to, že služba je funkce konstruktoru, zatímco továrna nikoli.

  • Pro lepší pochopení se podívejme na funkci factory():

function factory(name, factFn, enforce) {

return provider(name, {

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

});

}

V uvedeném kódu přebírá jméno a předanou funkci factory. Vrátí poskytovatele se stejným jménem spolu s metodou $get(což je tovární funkce) . Je to z toho důvodu, že kdykoli je injektor požádán o konkrétní závislost, požádá injektor poskytovatele o instanci této služby voláním metody $get().

  • Při injektování FirstService se zavolají tovární funkce:

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

  • Pro kód služby:

function service(name, constructor) {

return factory(name, );

}

Když zavoláme service(), factory()je to ta, která je skutečně volána. To se provádí předáním funkce, která žádá injektor o instanci objektu pomocí konstruktoru. Zjednodušeně řečeno, služba volá předdefinovanou továrnu.

$injector.instantiate() volá Object.create() s funkcí konstruktoru. Proto se tato funkce používá ve službách.

Příklad továrny v jazyce JavaScript

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

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

return "a value";

});

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

.

console.log(firstFactory);

});

Vstřikování hodnot do továrny

Hodnotu lze do továrny vstřikovat následující metodou:

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

firstModule.value("numberValue", 29);

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

console.log(numberValue);

});

POZNÁMKA: Je třeba si uvědomit, že se injektuje hodnota vytvořená funkcí factory, nikoliv samotná funkce factory.

Tímto končíme tento článek o funkci Factory v AngularJS. Doufám, že jste pochopili, co přesně je továrna a jak se liší od služby.

Podívejte se na školení Angular od Edureka, důvěryhodné online vzdělávací společnosti se sítí více než 250 000 spokojených studentů rozesetých po celém světě. Angular je framework JavaScriptu, který se používá k vytváření škálovatelných, podnikových a výkonných webových aplikací na straně klienta. Vzhledem k vysokému přijetí frameworku Angular je správa výkonu aplikací řízena komunitou, což nepřímo vede k lepším pracovním příležitostem. Cílem certifikačního školení Angular je pokrýt všechny tyto nové koncepty týkající se vývoje podnikových aplikací.

Napsat komentář