AngularJS Factory Method (original) (raw)
Last Updated : 19 Oct, 2023
AngularJS Factory Method makes the development process of AngularJS applications more robust. A factory is a simple function that allows us to add some logic to a created object and return the created object. The factory is also used to create/return a function in the form of reusable code which can be used anywhere within the application. Whenever we create an object using a factory it always returns a new instance for that object. The object returned by the factory can be integrated(injectible) with different components of the Angularjs framework such as controller, service, filter, or directive.
Use: A practical Scenario Factory generally acts as a container or class for a collection of functions that fulfills different features of the application. When used with a constructor function it can be initiated within different Controllers.
Syntax:
module.factory( 'factoryName', function(){ Custom code....});
Example 1: The following example illustrates the use of factory code instantiated inside a controller to generate a random number.
HTML
<!DOCTYPE html>
<
html
>
<
head
>
`` <
title
>Factory Example 1</
title
>
`` <
script
src
=
`` </
script
>
`` <
script
>
`` var application = angular.module('myApp', []);
`` application.factory('random', function () {
`` var randomObject = {};
`` var number = Math.floor(Math.random() * 100);
`` randomObject.generate = function () {
`` return number;
`` };
`` return randomObject;
`` });
`` application.controller('thisapp', function ($scope, random) {
`` $scope.generateRandom = function () {
`` $scope.randomNumber = random.generate();
`` };
`` });
`` </
script
>
</
head
>
<
body
>
`` <
h1
style
=
"color:green"
>GeeksforGeeks</
h1
>
`` <
h2
>Factory Examples</
h2
>
`` <
div
ng-app
=
"myApp"
ng-controller
=
"thisapp"
>
`` <
button
ng-click
=
"generateRandom()"
>
`` Generate Random Number
`` </
button
>
`` <
br
>{{randomNumber}}
`` </
div
>
</
body
>
</
html
>
Output:
On Clicking the generate random number button we get a different number every time. In this example, we use the factory method to define a function that carries a variable and using the Math.random we store a random value to that variable every time this function is called. This function is then called in the controller whose $scope variable carries the random value from the called function we then call this controller to our HTML code to display the result.
Example 2: This example makes use of a factory to create a function to find the addition or subtraction of two numbers. this function is then loaded in the controller $scope variable which passes them to the HTML code for displaying the results.
HTML
<!DOCTYPE html>
<
html
>
<
head
>
`` <
title
>Factory Example 2</
title
>
`` <
script
src
=
`` </
script
>
`` <
script
>
`` var application = angular.module('myApp', []);
`` application.factory('MyFactoryService', function () {
`` var factory = {};
`` factory.Subtract = function (a, b) {
`` return a - b;
`` };
`` factory.Add = function (a, b) {
`` return a + b;
`` };
`` return factory;
`` });
`` application.controller('thisapp', function (
`` $scope, MyFactoryService) {
`` $scope.result = function () {
`` $scope.results =
`` MyFactoryService.Subtract($scope.num1, $scope.num2)
`` };
`` $scope.result2 = function () {
`` $scope.results =
`` MyFactoryService.Add($scope.num1, $scope.num2)
`` };
`` });
`` </
script
>
</
head
>
<
body
>
`` <
h1
style
=
"color:green"
>GeeksforGeeks</
h1
>
`` <
h2
>Factory Example 2</
h2
>
`` <
div
ng-app
=
"myApp"
ng-controller
=
"thisapp"
>
`` <
p
>
`` Enter A Number:
`` <
input
type
=
"number"
ng-model
=
"num1"
/>
`` <
br
/> Enter A Number:
`` <
input
type
=
"number"
ng-model
=
"num2"
/>
`` <
br
/>
`` </
p
>
`` <
button
ng-click
=
"result()"
>Subtract</
button
>
`` <
button
ng-click
=
"result2()"
>Add</
button
>
`` <
p
>Results: {{results}}
`` </
div
>
</
body
>
</
html
>
Output: