Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit b0d5f06

Browse files
wesleychoIgorMinar
authored andcommitted
fix(ngSubmit): expose $event to ngSubmit callback
1 parent 2c07532 commit b0d5f06

File tree

3 files changed

+67
-8
lines changed

3 files changed

+67
-8
lines changed

src/AngularPublic.js

-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ function publishExternalAPI(angular){
8787
ngPluralize: ngPluralizeDirective,
8888
ngRepeat: ngRepeatDirective,
8989
ngShow: ngShowDirective,
90-
ngSubmit: ngSubmitDirective,
9190
ngStyle: ngStyleDirective,
9291
ngSwitch: ngSwitchDirective,
9392
ngSwitchWhen: ngSwitchWhenDirective,

src/ng/directive/ngEventDirs.js

+50-7
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
*/
3838
var ngEventDirectives = {};
3939
forEach(
40-
'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave'.split(' '),
40+
'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave submit'.split(' '),
4141
function(name) {
4242
var directiveName = directiveNormalize('ng-' + name);
4343
ngEventDirectives[directiveName] = ['$parse', function($parse) {
@@ -164,6 +164,54 @@ forEach(
164164
*/
165165

166166

167+
/**
168+
* @ngdoc directive
169+
* @name ng.directive:ngKeydown
170+
*
171+
* @description
172+
* Specify custom behavior on keydown event.
173+
*
174+
* @element ANY
175+
* @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon
176+
* keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
177+
*
178+
* @example
179+
* See {@link ng.directive:ngClick ngClick}
180+
*/
181+
182+
183+
/**
184+
* @ngdoc directive
185+
* @name ng.directive:ngKeyup
186+
*
187+
* @description
188+
* Specify custom behavior on keyup event.
189+
*
190+
* @element ANY
191+
* @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon
192+
* keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
193+
*
194+
* @example
195+
* See {@link ng.directive:ngClick ngClick}
196+
*/
197+
198+
199+
/**
200+
* @ngdoc directive
201+
* @name ng.directive:ngKeypress
202+
*
203+
* @description
204+
* Specify custom behavior on keypress event.
205+
*
206+
* @element ANY
207+
* @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
208+
* keypress. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
209+
*
210+
* @example
211+
* See {@link ng.directive:ngClick ngClick}
212+
*/
213+
214+
167215
/**
168216
* @ngdoc directive
169217
* @name ng.directive:ngSubmit
@@ -176,7 +224,7 @@ forEach(
176224
* attribute**.
177225
*
178226
* @element form
179-
* @param {expression} ngSubmit {@link guide/expression Expression} to eval.
227+
* @param {expression} ngSubmit {@link guide/expression Expression} to eval. (Event object is available as `$event`)
180228
*
181229
* @example
182230
<doc:example>
@@ -216,8 +264,3 @@ forEach(
216264
</doc:scenario>
217265
</doc:example>
218266
*/
219-
var ngSubmitDirective = ngDirective(function(scope, element, attrs) {
220-
element.bind('submit', function() {
221-
scope.$apply(attrs.ngSubmit);
222-
});
223-
});

test/ng/directive/ngEventDirsSpec.js

+17
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,22 @@ describe('event directives', function() {
2121
browserTrigger(element.children()[0]);
2222
expect($rootScope.submitted).toEqual(true);
2323
}));
24+
25+
it('should expose event on form submit', inject(function($rootScope, $compile) {
26+
$rootScope.formSubmission = function(e) {
27+
if (e) {
28+
$rootScope.formSubmitted = 'foo';
29+
}
30+
};
31+
32+
element = $compile('<form action="" ng-submit="formSubmission($event)">' +
33+
'<input type="submit"/>' +
34+
'</form>')($rootScope);
35+
$rootScope.$digest();
36+
expect($rootScope.formSubmitted).not.toBeDefined();
37+
38+
browserTrigger(element.children()[0]);
39+
expect($rootScope.formSubmitted).toEqual('foo');
40+
}));
2441
});
2542
});

0 commit comments

Comments
 (0)