mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-22 09:30:28 +00:00
60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngInit
|
|
* @restrict AC
|
|
*
|
|
* @description
|
|
* The `ngInit` directive allows you to evaluate an expression in the
|
|
* current scope.
|
|
*
|
|
* <div class="alert alert-error">
|
|
* The only appropriate use of `ngInit` is for aliasing special properties of
|
|
* {@link api/ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below. Besides this case, you
|
|
* should use {@link guide/controller controllers} rather than `ngInit`
|
|
* to initialize values on a scope.
|
|
* </div>
|
|
*
|
|
* @priority 450
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngInit {@link guide/expression Expression} to eval.
|
|
*
|
|
* @example
|
|
<doc:example>
|
|
<doc:source>
|
|
<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>
|
|
</doc:source>
|
|
<doc:scenario>
|
|
it('should alias index positions', function() {
|
|
expect(element('.example-init').text())
|
|
.toBe('list[ 0 ][ 0 ] = a;' +
|
|
'list[ 0 ][ 1 ] = b;' +
|
|
'list[ 1 ][ 0 ] = c;' +
|
|
'list[ 1 ][ 1 ] = d;');
|
|
});
|
|
</doc:scenario>
|
|
</doc:example>
|
|
*/
|
|
var ngInitDirective = ngDirective({
|
|
priority: 450,
|
|
compile: function() {
|
|
return {
|
|
pre: function(scope, element, attrs) {
|
|
scope.$eval(attrs.ngInit);
|
|
}
|
|
};
|
|
}
|
|
});
|