diff options
| author | Misko Hevery | 2012-02-06 21:56:35 -0800 |
|---|---|---|
| committer | Misko Hevery | 2012-02-21 22:46:00 -0800 |
| commit | 1752c8c44a7058e974ef208e583683eac8817789 (patch) | |
| tree | a8d49ecfd96e739f2de12a9b71385b46ad3c0cf7 /src/directives.js | |
| parent | 6216dc046510204bafd159dba17ce0cc22db6c08 (diff) | |
| download | angular.js-1752c8c44a7058e974ef208e583683eac8817789.tar.bz2 | |
feat(directive): event now accessible as $event
Closes 259
Diffstat (limited to 'src/directives.js')
| -rw-r--r-- | src/directives.js | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/directives.js b/src/directives.js index 47a6ef56..c6cc0b15 100644 --- a/src/directives.js +++ b/src/directives.js @@ -375,7 +375,7 @@ var ngBindAttrDirective = ['$interpolate', function($interpolate) { * * @element ANY * @param {expression} expression {@link guide/dev_guide.expressions Expression} to evaluate upon - * click. + * click. (Event object is available as `$event`) * * @example <doc:example> @@ -399,20 +399,22 @@ var ngBindAttrDirective = ['$interpolate', function($interpolate) { * expressions and are compiled and executed within the current scope. * * Events that are handled via these handler are always configured not to propagate further. - * - * TODO: maybe we should consider allowing users to control event propagation in the future. */ var ngEventDirectives = {}; forEach( 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave'.split(' '), function(name) { var directiveName = directiveNormalize('ng-' + name); - ngEventDirectives[directiveName] = valueFn(function(scope, element, attr) { - element.bind(lowercase(name), function(event) { - scope.$apply(attr[directiveName]); - event.stopPropagation(); - }); - }); + ngEventDirectives[directiveName] = ['$parse', function($parse) { + return function(scope, element, attr) { + var fn = $parse(attr[directiveName]); + element.bind(lowercase(name), function(event) { + scope.$apply(function() { + fn(scope, {$event:event}); + }); + }); + }; + }]; } ); @@ -425,7 +427,7 @@ forEach( * * @element ANY * @param {expression} expression {@link guide/dev_guide.expressions Expression} to evaluate upon - * dblclick. + * dblclick. (Event object is available as `$event`) * * @example * See {@link angular.module.ng.$compileProvider.directive.ng:click ng:click} @@ -441,7 +443,7 @@ forEach( * * @element ANY * @param {expression} expression {@link guide/dev_guide.expressions Expression} to evaluate upon - * mousedown. + * mousedown. (Event object is available as `$event`) * * @example * See {@link angular.module.ng.$compileProvider.directive.ng:click ng:click} @@ -457,7 +459,7 @@ forEach( * * @element ANY * @param {expression} expression {@link guide/dev_guide.expressions Expression} to evaluate upon - * mouseup. + * mouseup. (Event object is available as `$event`) * * @example * See {@link angular.module.ng.$compileProvider.directive.ng:click ng:click} @@ -472,7 +474,7 @@ forEach( * * @element ANY * @param {expression} expression {@link guide/dev_guide.expressions Expression} to evaluate upon - * mouseover. + * mouseover. (Event object is available as `$event`) * * @example * See {@link angular.module.ng.$compileProvider.directive.ng:click ng:click} @@ -488,7 +490,7 @@ forEach( * * @element ANY * @param {expression} expression {@link guide/dev_guide.expressions Expression} to evaluate upon - * mouseenter. + * mouseenter. (Event object is available as `$event`) * * @example * See {@link angular.module.ng.$compileProvider.directive.ng:click ng:click} @@ -504,7 +506,7 @@ forEach( * * @element ANY * @param {expression} expression {@link guide/dev_guide.expressions Expression} to evaluate upon - * mouseleave. + * mouseleave. (Event object is available as `$event`) * * @example * See {@link angular.module.ng.$compileProvider.directive.ng:click ng:click} @@ -520,7 +522,7 @@ forEach( * * @element ANY * @param {expression} expression {@link guide/dev_guide.expressions Expression} to evaluate upon - * mousemove. + * mousemove. (Event object is available as `$event`) * * @example * See {@link angular.module.ng.$compileProvider.directive.ng:click ng:click} |
