# Developer Guide: Angular HTML Compiler: Understanding Angular Directives

Work in Progress This page is currently being revised. It might be incomplete or contain inaccuracies.

An angular directive is a custom HTML attribute that angular knows how to process. You add them to a template element like any other attribute. Angular directives all have a `ng:` prefix. In the following example, the angular directive (`ng:controller`) is a div tag:

        <div ng:controller>

You use angular directives to modify DOM element properties. The element you modify can be an existing HTML element type or a custom DOM element type that you created. You can use any number of directives per element.

You add angular directives to a standard HTML tag as in the following example, in which we have added the `ng:click` directive to a button tag:

        <button name="button1" ng:click="foo()">Click This</button>

In the example above, `name` is the standard HTML attribute, and `ng:click` is the angular directive. The `ng:click` directive lets you implement custom behavior in an associated controller function.

In the next example, we add the `ng:bind` directive to a `<span>` tag:

        <span ng:bind="1+2"></span>

The `ng:bind` directive tells angular to set up data binding between the data model and the view for the specified expression. When the angular compiler encounters an `ng:bind` directive in a template, it passes the attribute value to the `ng:bind` function, which in turn sets up the data binding. On any change to the expression in the model, the view is updated to display the span text with the changed expression value.

### Related Topics

- Angular HTML Compiler
- Creating Angular Directives
- Comparing Directives and Widgets

### Related API:

- `Directive API`
- `Widget API`