Improve this Doc  View Source

ngInit

  1. - directive in module ng

Overview

The ngInit directive allows you to evaluate an expression in the current scope.

This directive can be abused to add unnecessary amounts of logic into your templates. There are only a few appropriate uses of ngInit: Besides these few cases, you should use Components or Controllers rather than ngInit to initialize values on a scope.
Note: If you have assignment in ngInit along with a filter, make sure you have parentheses to ensure correct operator precedence:
<div ng-init="test1 = ($index | toString)"></div>

Directive Info

Usage

Arguments

Param Type Details
ngInit expression

Expression to eval.

Example

<script>
  angular.module('initExample', [])
    .controller('ExampleController', ['$scope', function($scope) {
      $scope.list = [['a', 'b'], ['c', 'd']];
    }]);
</script>
<div ng-controller="ExampleController">
  <div ng-repeat="innerList in list" ng-init="outerIndex = $index">
    <div ng-repeat="value in innerList" ng-init="innerIndex = $index">
       <span class="example-init">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span>
    </div>
  </div>
</div>
it('should alias index positions', function() {
  var elements = element.all(by.css('.example-init'));
  expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');
  expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');
  expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');
  expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');
});