diff options
| author | Brian Ford | 2013-10-03 13:28:44 -0700 |
|---|---|---|
| committer | Pete Bacon Darwin | 2013-10-07 14:42:54 +0100 |
| commit | 3374e35953f41fb255fff276e43afd2fc997f1d7 (patch) | |
| tree | 4f12adfceeba06824e06ee3ea2a3a3c24c4e069b | |
| parent | 90ff8a98d84e2c0f240d89d362e6131c621e4cc1 (diff) | |
| download | angular.js-3374e35953f41fb255fff276e43afd2fc997f1d7.tar.bz2 | |
docs(ngValue): add docs for ngValue directive
Closes #4267
| -rw-r--r-- | src/ng/directive/input.js | 55 |
1 files changed, 52 insertions, 3 deletions
diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index 3d185930..5e911e99 100644 --- a/src/ng/directive/input.js +++ b/src/ng/directive/input.js @@ -1330,17 +1330,66 @@ var ngListDirective = function() { var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/; - +/** + * @ngdoc directive + * @name ng.directive:ngValue + * + * @description + * Binds the given expression to the value of `input[select]` or `input[radio]`, so + * that when the element is selected, the `ngModel` of that element is set to the + * bound value. + * + * `ngValue` is useful when dynamically generating lists of radio buttons using `ng-repeat`, as + * shown below. + * + * @element input + * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute + * of the `input` element + * + * @example + <doc:example> + <doc:source> + <script> + function Ctrl($scope) { + $scope.names = ['pizza', 'unicorns', 'robots']; + $scope.my = { favorite: 'unicorns' }; + } + </script> + <form ng-controller="Ctrl"> + <h2>Which is your favorite?</h2> + <label ng-repeat="name in names" for="{{name}}"> + {{name}} + <input type="radio" + ng-model="my.favorite" + ng-value="name" + id="{{name}}" + name="favorite"> + </label> + </span> + <div>You chose {{my.favorite}}</div> + </form> + </doc:source> + <doc:scenario> + it('should initialize to model', function() { + expect(binding('my.favorite')).toEqual('unicorns'); + }); + it('should bind the values to the inputs', function() { + input('my.favorite').select('pizza'); + expect(binding('my.favorite')).toEqual('pizza'); + }); + </doc:scenario> + </doc:example> + */ var ngValueDirective = function() { return { priority: 100, compile: function(tpl, tplAttr) { if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) { - return function(scope, elm, attr) { + return function ngValueConstantLink(scope, elm, attr) { attr.$set('value', scope.$eval(attr.ngValue)); }; } else { - return function(scope, elm, attr) { + return function ngValueLink(scope, elm, attr) { scope.$watch(attr.ngValue, function valueWatchAction(value) { attr.$set('value', value); }); |
