diff options
| -rw-r--r-- | src/ng/directive/ngEventDirs.js | 34 | ||||
| -rw-r--r-- | test/ng/directive/ngKeySpec.js | 29 |
2 files changed, 62 insertions, 1 deletions
diff --git a/src/ng/directive/ngEventDirs.js b/src/ng/directive/ngEventDirs.js index 4d079718..e2aedd7f 100644 --- a/src/ng/directive/ngEventDirs.js +++ b/src/ng/directive/ngEventDirs.js @@ -37,7 +37,7 @@ */ var ngEventDirectives = {}; forEach( - 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave'.split(' '), + 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup'.split(' '), function(name) { var directiveName = directiveNormalize('ng-' + name); ngEventDirectives[directiveName] = ['$parse', function($parse) { @@ -166,6 +166,38 @@ forEach( /** * @ngdoc directive + * @name ng.directive:ngKeydown + * + * @description + * Specify custom behavior on keydown event. + * + * @element ANY + * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon + * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.) + * + * @example + * See {@link ng.directive:ngClick ngClick} + */ + + +/** + * @ngdoc directive + * @name ng.directive:ngKeyup + * + * @description + * Specify custom behavior on keyup event. + * + * @element ANY + * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon + * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.) + * + * @example + * See {@link ng.directive:ngClick ngClick} + */ + + +/** + * @ngdoc directive * @name ng.directive:ngSubmit * * @description diff --git a/test/ng/directive/ngKeySpec.js b/test/ng/directive/ngKeySpec.js new file mode 100644 index 00000000..d8c6f9de --- /dev/null +++ b/test/ng/directive/ngKeySpec.js @@ -0,0 +1,29 @@ +'use strict'; + +describe('ngKeyup and ngKeydown directives', function() { + var element; + + afterEach(function() { + dealoc(element); + }); + + it('should get called on a keyup', inject(function($rootScope, $compile) { + element = $compile('<input ng-keyup="touched = true">')($rootScope); + $rootScope.$digest(); + expect($rootScope.touched).toBeFalsy(); + + browserTrigger(element, 'keyup'); + expect($rootScope.touched).toEqual(true); + })); + + it('should get called on a keydown', inject(function($rootScope, $compile) { + element = $compile('<input ng-keydown="touched = true">')($rootScope); + $rootScope.$digest(); + expect($rootScope.touched).toBeFalsy(); + + browserTrigger(element, 'keydown'); + expect($rootScope.touched).toEqual(true); + })); + +}); + |
