AngularJS Modules

A module in AngularJS defines an application. Basically, a module is the container for the various parts of the application. The module also contains all the application controllers; or we can say that controllers always belong to a module. The modular approach is supported by AngularJS.

These modules are instrumental in separating logics like services, applications and controllers. This helps in keeping the code clean.

The modules are defined in separate .js files and names as module.js file. In the following example we are going to create two modules.


  • Application Module - This module is used in the initialization of an application with controller (s).
  • Controller Module- This module is used to define the controller.

Now let us take up examples and explain the above two modules.


How to create a module

mainApp.js

var mainApp = angular.module("mainApp", []);  

In the above code, using the angular.module function we have to declare an application mainApp module. This array usually contains all the dependent modules.


How to create a module

studentController.js

mainApp.controller("studentController", function($scope) {
   $scope.student = {
      firstName: "Mahesh",
      lastName: "Parashar",
      fees:500,
      
      subjects:[
         {name:'Physics',marks:70},
         {name:'Chemistry',marks:80},
         {name:'Math',marks:65},
         {name:'English',marks:75},
         {name:'Hindi',marks:67}
      ],
      
      fullName: function() {
         var studentObject;
         studentObject = $scope.student;
         return studentObject.firstName + " " + studentObject.lastName;
      }
   };
});

In the above code using the mainApp.controller function, we have declared a controller studentController module.

How to Use these Modules?

To use the above two modules, one must import these modules into the main HTML page. In the given application, we have used application module using ng-app directive and controller using the ng-controller directive. After importing these modules, they can be used as parts of the HTML document. The following code shows the implementation.

< div ng-app = "mainApp" ng-controller = "studentController">
   ...
  <script src = "mainApp.js"></script>
   <script src = "studentController.js"></script>
	
</div> 

How to add directive to a module

AnglarJS directives are used to add functionality to your application. You can also add your own directives for your applications.

Following is a list of AngularJS directives:

Directive Description
ng-app It defines the root element of an application.
ng-bind It binds the content of an html element to application data.
ng-bind-html Itbinds the innerhtml of an html element to application data, and also removes dangerous code from the html string.
ng-bind-template It specifies that the text content should be replaced with a template.
ng-blur It specifies a behavior on blur events.
ng-change It specifies an expression to evaluate when content is being changed by the user.
ng-checked It specifies if an element is checked or not.
ng-class It specifies css classes on html elements.
ng-class-even It is same as ng-class, but will only take effect on even rows.
ng-class-odd It is same as ng-class, but will only take effect on odd rows.
ng-click It specifies an expression to evaluate when an element is being clicked.
ng-cloak It prevents flickering when your application is being loaded.
ng-controller It defines the controller object for an application.
ng-copy It specifies a behavior on copy events.
ng-csp It changes the content security policy.
ng-cut It specifies a behavior on cut events.
ng-dblclick It specifies a behavior on double-click events.
ng-disabled It specifies if an element is disabled or not.
ng-focus It specifies a behavior on focus events.
ng-form It specifies an html form to inherit controls from.
ng-hide It hides or shows html elements.
ng-href It specifies a URL for the <a> element.
ng-if It removes the html element if a condition is false.
ng-include It includes html in an application.
ng-init It defines initial values for an application.
ng-jq It specifies that the application must use a library, like jQuery.
ng-keydown It specifies a behavior on keydown events.
ng-keypress It specifies a behavior on keypress events.
ng-keyup It specifies a behavior on keyup events.
ng-list It converts text into a list (array).
ng-model It binds the value of html controls to application data.
ng-model-options It specifies how updates in the model are done.
ng-mousedown It specifies a behavior on mousedown events.
ng-mouseenter It specifies a behavior on mouseenter events.
ng-mouseleave It specifies a behavior on mouseleave events.
ng-mousemove It specifies a behavior on mousemove events.
ng-mouseover It specifies a behavior on mouseover events.
ng-mouseup It specifies a behavior on mouseup events.
ng-non-bindable It specifies that no data binding can happen in this element, or it's children.
ng-open It specifies the open attribute of an element.
ng-options It specifies <options> in a <select> list.
ng-paste It specifies a behavior on paste events.
ng-pluralize It specifies a message to display according to en-us localization rules.
ng-readonly It specifies the readonly attribute of an element.
ng-repeat It defines a template for each data in a collection.
ng-required It specifies the required attribute of an element.
ng-selected It specifies the selected attribute of an element.
ng-show It shows or hides html elements.
ng-src It specifies the src attribute for the <img> element.
ng-srcset It specifies the srcset attribute for the <img> element.
ng-style It specifies the style attribute for an element.
ng-submit It specifies expressions to run on onsubmit events.
ng-switch It specifies a condition that will be used to show/hide child elements.
ng-transclude It specifies a point to insert transcluded elements.
ng-value It specifies the value of an input element.

Global functions are generally avoided in JavaScript as they can be overwritten or easily destroyed by other scripts. The module implementation reduces this problem greatly, by keeping the functions local to the module.