Creating Custom Services in AngularJS

One of the powerful features of AngularJS is the ability to create custom services. Services in AngularJS are singleton objects that can be injected and shared across various components of your application, such as controllers, filters, and directives. In this article, we will explore how to create and use custom services in AngularJS.

Why Use Custom Services?

Custom services allow you to encapsulate reusable logic and functionality in a modular and maintainable manner. By separating concerns and keeping code organized, custom services promote code reusability, testability, and make your application more maintainable.

Creating a Custom Service

To create a custom service, we can use the factory function of the AngularJS module. The factory function takes two arguments: the name of the service and a factory function that returns the service object. Let's take a look at an example:

// Define a custom service called 'userService'
angular.module('myApp').factory('userService', function() {
    var users = [];

    function getUsers() {
        // Logic to fetch users from a data source
        return users;
    }

    function addUser(user) {
        // Logic to add a user to the data source
        users.push(user);
    }

    // Expose public methods and properties of the service
    return {
        getUsers: getUsers,
        addUser: addUser
    };
});

In the above example, we define a custom service called 'userService'. We create an empty array users, as well as two functions: getUsers to get all the users, and addUser to add a new user to the users array. Finally, we return an object containing the public methods and properties of the service.

Using the Custom Service

Once the custom service is defined, we can inject and use it in our controllers, filters, or directives. In the following example, we inject the 'userService' into a controller and use it to add a new user:

angular.module('myApp').controller('userController', function(userService) {
    var vm = this;

    vm.newUser = {
        name: '',
        age: ''
    };

    vm.addUser = function() {
        userService.addUser(vm.newUser);
        // Clear the input fields
        vm.newUser = {};
    };
});

In the above controller, we inject the 'userService' and assign it to the userService variable. We define a newUser object to hold the data entered by the user, and we use the addUser method of the service to add the new user.

Conclusion

Custom services in AngularJS provide a flexible way to share and reuse code across different components of your application. Whether it's data manipulation, business logic, or integration with external APIs, custom services help you keep your code modular, maintainable, and testable. By utilizing custom services effectively, you can build robust and scalable AngularJS applications.


noob to master © copyleft