docs(ngInit): add note on best practices

This commit is contained in:
Brian Ford 2013-10-10 11:35:30 -07:00
parent 07272608d8
commit e819d21fa0

View file

@ -6,8 +6,15 @@
* @restrict AC * @restrict AC
* *
* @description * @description
* The `ngInit` directive specifies initialization tasks to be executed * The `ngInit` directive allows you to evaluate an expression in the
* before the template enters execution mode during bootstrap. * current scope.
*
* <div class="alert alert-error">
* The only appropriate use of `ngInit` for aliasing special properties of
* {@link api/ng.directive:ngRepeat `ngRepeat`}, as seen in the demo bellow. Besides this case, you
* should use {@link guide/dev_guide.mvc.understanding_controller controllers} rather than `ngInit`
* to initialize values on a scope.
* </div>
* *
* @element ANY * @element ANY
* @param {expression} ngInit {@link guide/expression Expression} to eval. * @param {expression} ngInit {@link guide/expression Expression} to eval.
@ -15,14 +22,26 @@
* @example * @example
<doc:example> <doc:example>
<doc:source> <doc:source>
<div ng-init="greeting='Hello'; person='World'"> <script>
{{greeting}} {{person}}! function Ctrl($scope) {
</div> $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>
</doc:source> </doc:source>
<doc:scenario> <doc:scenario>
it('should check greeting', function() { it('should alias index positions', function() {
expect(binding('greeting')).toBe('Hello'); expect(element('.example-init').text())
expect(binding('person')).toBe('World'); .toBe('list[ 0 ][ 0 ] = a;' +
'list[ 0 ][ 1 ] = b;' +
'list[ 1 ][ 0 ] = c;' +
'list[ 1 ][ 1 ] = d;');
}); });
</doc:scenario> </doc:scenario>
</doc:example> </doc:example>