aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Ford2013-10-03 13:28:44 -0700
committerPete Bacon Darwin2013-10-07 14:42:54 +0100
commit3374e35953f41fb255fff276e43afd2fc997f1d7 (patch)
tree4f12adfceeba06824e06ee3ea2a3a3c24c4e069b
parent90ff8a98d84e2c0f240d89d362e6131c621e4cc1 (diff)
downloadangular.js-3374e35953f41fb255fff276e43afd2fc997f1d7.tar.bz2
docs(ngValue): add docs for ngValue directive
Closes #4267
-rw-r--r--src/ng/directive/input.js55
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);
});