AngularJS Event Handling Tutorial

Elliot Forbes ⏰ 2 Minutes 📅 Apr 9, 2017

In this tutorial we’ll be looking at the different ways we can handle events in AngularJS. We’ll be exploring several of the event listening directives that AngularJS has on offer and how we can use these to create cool behaviours in our AngularJS Applications.

Browser Events

In most modern web browsers, every time something interesting happens in either the Document or the browser an event is generated. Within AngularJS we can register event listeners that will listen for said events and perform some action whenever they occur.

An event can be a vast number of things, from hovering over a hyperlink to double-clicking on an object on the page and thankfully Angular has directives that cover a lot of these.

AngularJS Event Listeners

The complete list of AngularJS events are as follows:

  • ng-blur
  • ng-change
  • ng-click
  • ng-copy
  • ng-cut
  • ng-dblclick
  • ng-focus
  • ng-keydown
  • ng-keypress
  • ng-keyup
  • ng-mousedown
  • ng-mouseenter
  • ng-mouseleave
  • ng-mousemove
  • ng-mouseover
  • ng-mouseup
  • ng-paste

These can be used by placing them on the object of your page and passing this directive the name of the function you wish to call or the code that you wish to execute.

// passing it the code we wish to execute
<div ng-click="console.log('hello world')"></div>
// or the named function we wish to call
<div ng-click="myNamedFunction()"></div>

This shows the power of the AngularJS framework as it hides all the ugly DOM manipulation code and allows us to focus on implementing the business logic into our application.

Implementation

Below you’ll find an array of how we can utilize these event handling directives in AngularJS. These are just some examples of how you could go about implementing these directives in your own Angular application.

<input
  class="form-control"
  ng-keydown="counter = counter + 1"
  placeholder="Keydown Change..."
/>
<input
  class="form-control"
  ng-keypress="counter = counter + 1"
  placeholder="Keypress change..."
/>
<button class="btn btn-primary" ng-click="counter = counter + 1">
  Click Me!
</button>
<button class="btn btn-primary" ng-dblclick="counter = counter + 1">
  Double Click Me!
</button>
<p ng-copy="counter = counter + 1">Copy text from me!</p>
<textarea
  class="form-control"
  ng-cut="counter = counter + 1"
  cols="30"
  rows="10"
>
Cut text from me!</textarea
>
<input
  type="text"
  class="form-control"
  ng-focus="counter = counter + 1"
  placeholder="Focus on me..."
/>
<p ng-mouseenter="counter = counter + 1">Mouse Enter event</p>
<p ng-mouseleave="counter = counter + 1">Mouse Leave event</p>
<input
  type="text"
  class="form-control"
  ng-paste="counter = counter + 1"
  placeholder="paste into me..."
/>