The ngInit
directive allows you to evaluate an expression in the
current scope.
ngInit
is for aliasing special properties of
ngRepeat
, as seen in the demo below. Besides this case, you
should use controllers rather than ngInit
to initialize values on a scope.
ngInit
along with $filter
, make
sure you have parenthesis for correct precedence:
<ANY
ng-init="">
...
</ANY>
<ANY class="ng-init: ;"> ... </ANY>
Param | Type | Details |
---|---|---|
ngInit | expression |
Expression to eval. |
<script>
function Ctrl($scope) {
$scope.list = [['a', 'b'], ['c', 'd']];
}
</script>
<div ng-controller="Ctrl">
<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;');
});