Angular Directives and Filters
Objectives
Use ng-class for working with dynamic classes
Use ng-if & ng-hide/ng-show to hide & show elements
Use ng-repeat to iterate over data
Use ng-submit to submit forms
Explain the what filters are and how they manipulate data
Directives
Directives are additional DOM nodes – think custom attributes on HTML tags – that Angular uses to apply behaviors to HTML elements. Angular comes with a bunch of different directives for different behaviors and gives you the ability to create your own. So far, we've used a few like ng-app
, ng-controller
, ng-model
, and ng-click
.
Dynamic classes (ng-class)
You can use ng-class
to dynamically change the class of a HTML element based on a value of the $scope
.
There are two ways to do this. You can specify a variable to be passed in as a string from the controller OR you can specify an object and each key will be added as classes if the associated value is truthy.
You can also use this in conjuction with the regular class
parameter for classes that will always be included (see class="btn" below)
Hiding elements (ng-if, ng-hide, ng-show)
There are 3 ways to show and hide elements. All three take a boolean value (from the $scope
) to determine if the DOM element should be visible or not.
ng-show
- Shows the item if the value is truthy. Hides it if it's falseyng-hide
- The exact inverse of ng-showng-if
- Works like ng-show, but completely removes the element from the DOM if ng-if is falsey.
Note that if you use ng-if
, the element is completed removed from the DOM. This means that any click handlers will also be removed, even if the element is added again. For this reason, you'll usually want to use ng-hide
and ng-show
.
Listing items (ng-repeat)
Instead of using a for loop inside our app, we can use the ng-repeat
directive to loop over an array and access the contents.
This directive can also be used to iterate over objects, if desired.
ng-repeat
also provides some special properties inside the directive, the most useful being $index
. You'll likely notice that AngularJS won't allow duplicates in an array. This is because it uses a function to optimize instance handling once we start adding and removing items from a collection.
To get around this, we can track elements by an identifier, like $index
.
There's great information about this directive in the AngularJS documentation on ngRepeat
Submitting Forms (ng-submit)
When submitting forms, it's possible to attach the ng-click
directive to the submit button, and perform a function on click. However, since the form submits a submit action when the submit button is clicked, we can attach the ng-submit
directive to listen for this event.
Filters
What are Filters?
Filters are functions used to change and manipulate how data is displayed. This provides separation between how we store data and how we display data.
Built-in Filters
filter
currency
number
date
json
lowercase
uppercase
limitTo
orderBy
Let's try to add a limitTo
filter to our list.
Last updated