feat(directive): add ngKeypress directive for handling keypress event

This commit is contained in:
Mark Nadig 2013-03-05 10:43:06 -07:00 committed by Pawel Kozlowski
parent 65e57a7c3d
commit f20646bce5
2 changed files with 26 additions and 1 deletions

View file

@ -37,7 +37,7 @@
*/
var ngEventDirectives = {};
forEach(
'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup'.split(' '),
'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress'.split(' '),
function(name) {
var directiveName = directiveNormalize('ng-' + name);
ngEventDirectives[directiveName] = ['$parse', function($parse) {
@ -196,6 +196,22 @@ forEach(
*/
/**
* @ngdoc directive
* @name ng.directive:ngKeypress
*
* @description
* Specify custom behavior on keypress event.
*
* @element ANY
* @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
* keypress. (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

View file

@ -25,5 +25,14 @@ describe('ngKeyup and ngKeydown directives', function() {
expect($rootScope.touched).toEqual(true);
}));
it('should get called on a keypress', inject(function($rootScope, $compile) {
element = $compile('<input ng-keypress="touched = true">')($rootScope);
$rootScope.$digest();
expect($rootScope.touched).toBeFalsy();
browserTrigger(element, 'keypress');
expect($rootScope.touched).toEqual(true);
}));
});