Improve this Doc View Source

## Overview

A shared object between directive compile / linking functions which contains normalized DOM element attributes. The values reflect current binding state `{{ }}`. The normalization is needed since all of these are treated as equivalent in AngularJS:

    <span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">

## Methods

- ###

  `$normalize(name);`

  Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or `data-`) to its normalized, camelCase form.

  Also there is special case for Moz prefix starting with upper case letter.

  For further information check out the guide on Matching Directives

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  name | string | Name to normalize

- ###

  `$addClass(classVal);`

  Adds the CSS class value specified by the classVal parameter to the element. If animations are enabled then an animation will be triggered for the class addition.

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  classVal | string | The className value that will be added to the element

- ###

  `$removeClass(classVal);`

  Removes the CSS class value specified by the classVal parameter from the element. If animations are enabled then an animation will be triggered for the class removal.

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  classVal | string | The className value that will be removed from the element

- ###

  `$updateClass(newClasses, oldClasses);`

  Adds and removes the appropriate CSS class values to the element based on the difference between the new and old CSS class values (specified as newClasses and oldClasses).

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  newClasses | string | The current CSS className value
  oldClasses | string | The former CSS className value

- ###

  `$observe(key, fn);`

  Observes an interpolated attribute.

  The observer function will be invoked once during the next `$digest` following compilation. The observer is then invoked whenever the interpolated value changes.

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  key | string | Normalized key. (ie ngAttribute) .
  fn | function(interpolatedValue) | Function that will be called whenever the interpolated value of the attribute changes. See the Interpolation guide for more info.

  #### Returns

  function() | Returns a deregistration function for this observer.

- ###

  `$set(name, value);`

  Set DOM element attribute value.

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  name | string | Normalized element attribute name of the property to modify. The name is reverse-translated using the $attr property to the original name.
  value | string | Value to set the attribute to. The value can be an interpolated string.

## Properties

- ### `$attr`

  | A map of DOM element attribute names to the normalized name. This is needed to do reverse lookup from normalized name back to actual name.