@@ -1330,17 +1330,66 @@ var ngListDirective = function() {
1330
1330
1331
1331
1332
1332
var CONSTANT_VALUE_REGEXP = / ^ ( t r u e | f a l s e | \d + ) $ / ;
1333
-
1333
+ /**
1334
+ * @ngdoc directive
1335
+ * @name ng.directive:ngValue
1336
+ *
1337
+ * @description
1338
+ * Binds the given expression to the value of `input[select]` or `input[radio]`, so
1339
+ * that when the element is selected, the `ngModel` of that element is set to the
1340
+ * bound value.
1341
+ *
1342
+ * `ngValue` is useful when dynamically generating lists of radio buttons using `ng-repeat`, as
1343
+ * shown below.
1344
+ *
1345
+ * @element input
1346
+ * @param {string= } ngValue angular expression, whose value will be bound to the `value` attribute
1347
+ * of the `input` element
1348
+ *
1349
+ * @example
1350
+ <doc:example>
1351
+ <doc:source>
1352
+ <script>
1353
+ function Ctrl($scope) {
1354
+ $scope.names = ['pizza', 'unicorns', 'robots'];
1355
+ $scope.my = { favorite: 'unicorns' };
1356
+ }
1357
+ </script>
1358
+ <form ng-controller="Ctrl">
1359
+ <h2>Which is your favorite?</h2>
1360
+ <label ng-repeat="name in names" for="{{name}}">
1361
+ {{name}}
1362
+ <input type="radio"
1363
+ ng-model="my.favorite"
1364
+ ng-value="name"
1365
+ id="{{name}}"
1366
+ name="favorite">
1367
+ </label>
1368
+ </span>
1369
+ <div>You chose {{my.favorite}}</div>
1370
+ </form>
1371
+ </doc:source>
1372
+ <doc:scenario>
1373
+ it('should initialize to model', function() {
1374
+ expect(binding('my.favorite')).toEqual('unicorns');
1375
+ });
1376
+ it('should bind the values to the inputs', function() {
1377
+ input('my.favorite').select('pizza');
1378
+ expect(binding('my.favorite')).toEqual('pizza');
1379
+ });
1380
+ </doc:scenario>
1381
+ </doc:example>
1382
+ */
1334
1383
var ngValueDirective = function ( ) {
1335
1384
return {
1336
1385
priority : 100 ,
1337
1386
compile : function ( tpl , tplAttr ) {
1338
1387
if ( CONSTANT_VALUE_REGEXP . test ( tplAttr . ngValue ) ) {
1339
- return function ( scope , elm , attr ) {
1388
+ return function ngValueConstantLink ( scope , elm , attr ) {
1340
1389
attr . $set ( 'value' , scope . $eval ( attr . ngValue ) ) ;
1341
1390
} ;
1342
1391
} else {
1343
- return function ( scope , elm , attr ) {
1392
+ return function ngValueLink ( scope , elm , attr ) {
1344
1393
scope . $watch ( attr . ngValue , function valueWatchAction ( value ) {
1345
1394
attr . $set ( 'value' , value ) ;
1346
1395
} ) ;
0 commit comments