diff options
| author | David Chang | 2013-01-17 20:08:27 -0800 |
|---|---|---|
| committer | Misko Hevery | 2013-01-18 21:16:16 -0800 |
| commit | b8bd4d5460d9952e9a3bb14992636b17859bd457 (patch) | |
| tree | 006bc10c402613a5a11c326e3d94b13037e0cd96 /src | |
| parent | b2f46251aca76c8568ee7d4bab54edbc9d7a186a (diff) | |
| download | angular.js-b8bd4d5460d9952e9a3bb14992636b17859bd457.tar.bz2 | |
feat(directive): added ng-open boolean directive
Closes# 1797 add ng-open attribute
Diffstat (limited to 'src')
| -rw-r--r-- | src/jqLite.js | 4 | ||||
| -rw-r--r-- | src/ng/directive/booleanAttrs.js | 31 |
2 files changed, 33 insertions, 2 deletions
diff --git a/src/jqLite.js b/src/jqLite.js index 46e0a73c..f84e7d1f 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -353,11 +353,11 @@ var JQLitePrototype = JQLite.prototype = { // value on get. ////////////////////////////////////////// var BOOLEAN_ATTR = {}; -forEach('multiple,selected,checked,disabled,readOnly,required'.split(','), function(value) { +forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) { BOOLEAN_ATTR[lowercase(value)] = value; }); var BOOLEAN_ELEMENTS = {}; -forEach('input,select,option,textarea,button,form'.split(','), function(value) { +forEach('input,select,option,textarea,button,form,details'.split(','), function(value) { BOOLEAN_ELEMENTS[uppercase(value)] = true; }); diff --git a/src/ng/directive/booleanAttrs.js b/src/ng/directive/booleanAttrs.js index 8902c35d..864c12c1 100644 --- a/src/ng/directive/booleanAttrs.js +++ b/src/ng/directive/booleanAttrs.js @@ -272,6 +272,37 @@ * @param {string} expression Angular expression that will be evaluated. */ +/** + * @ngdoc directive + * @name ng.directive:ngOpen + * @restrict A + * + * @description + * The HTML specs do not require browsers to preserve the special attributes such as open. + * (The presence of them means true and absence means false) + * This prevents the angular compiler from correctly retrieving the binding expression. + * To solve this problem, we introduce the `ngMultiple` directive. + * + * @example + <doc:example> + <doc:source> + Check me check multiple: <input type="checkbox" ng-model="open"><br/> + <details id="details" ng-open="open"> + <summary>Show/Hide me</summary> + </details> + </doc:source> + <doc:scenario> + it('should toggle open', function() { + expect(element('#details').prop('open')).toBeFalsy(); + input('open').check(); + expect(element('#details').prop('open')).toBeTruthy(); + }); + </doc:scenario> + </doc:example> + * + * @element DETAILS + * @param {string} expression Angular expression that will be evaluated. + */ var ngAttributeAliasDirectives = {}; |
