AngularJS, a popular JavaScript framework, provides a feature called directives that allows developers to extend HTML with new attributes or elements. Directives are a powerful way to create reusable components in your AngularJS applications. This tutorial will guide you through the basics of creating custom directives in AngularJS.

Understanding Directives

In AngularJS, a directive is a marker on a DOM element that tells AngularJS’s HTML compiler to attach a specified behavior to that DOM element. Directives can be used to create custom HTML tags that serve as new, custom widgets. They can also be used to “decorate” elements with behavior and manipulate DOM attributes in interesting ways.

Creating a Basic Directive

To create a directive in AngularJS, you use the .directive function. Here’s the basic syntax:

var testApp = angular.module('testApp',[]);

  return {

In this example, testApp is your Angular application or module, and myDirective is the name of your directive. Notice that we use camel case for the directive’s name.

Invoking Your Directive

You can invoke your directive in your HTML in three ways: as an element, as an attribute, or as a class. Here’s how you can do it:

<!-- As an element -->

<!-- As an attribute -->
<div my-directive></div>

<!-- As a class -->
<div class="my-directive"></div>

Configuring Your Directive

You can configure your directive by returning an object with various options inside the directive function. Here’s an example:

return {
  template:'My Directive: '

In this example, restrict: 'AEC' specifies that the directive can be invoked as an attribute (A), an element (E), or a class (C). The template: 'My Directive: ' line specifies the HTML that will be inserted into the DOM when the directive is invoked.

Using templateUrl Instead of Template

Instead of using the template option to specify your directive’s HTML, you can use the templateUrl option to specify the URL of an HTML file that contains your directive’s template. This is useful when your directive’s HTML is complex and needs to be in a separate file.

Accessing the Controller’s Scope

Directives can access the scope of the controller in which they are invoked. This allows directives to interact with the data and functions defined in the controller. Directives can also have their own separate controllers, which allows for more modular and reusable code.


Custom directives in AngularJS are a powerful feature that allows developers to create reusable components and extend HTML in interesting ways. By understanding how to create and use custom directives, you can write more modular and maintainable AngularJS code.

Similar Posts