aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWesley Cho2013-05-23 11:22:55 -0400
committerIgor Minar2013-07-11 17:27:36 -0700
commitb0d5f062e316370c7ac57cfd628d085015a8187d (patch)
treeeb3391aafa990e0ea04ea42804f7b97111fb8ad2
parent2c0753225a506185bf8b09b344e7615957009f02 (diff)
downloadangular.js-b0d5f062e316370c7ac57cfd628d085015a8187d.tar.bz2
fix(ngSubmit): expose $event to ngSubmit callback
-rw-r--r--src/AngularPublic.js1
-rw-r--r--src/ng/directive/ngEventDirs.js57
-rw-r--r--test/ng/directive/ngEventDirsSpec.js17
3 files changed, 67 insertions, 8 deletions
diff --git a/src/AngularPublic.js b/src/AngularPublic.js
index d281a2d5..2ecaee84 100644
--- a/src/AngularPublic.js
+++ b/src/AngularPublic.js
@@ -87,7 +87,6 @@ function publishExternalAPI(angular){
ngPluralize: ngPluralizeDirective,
ngRepeat: ngRepeatDirective,
ngShow: ngShowDirective,
- ngSubmit: ngSubmitDirective,
ngStyle: ngStyleDirective,
ngSwitch: ngSwitchDirective,
ngSwitchWhen: ngSwitchWhenDirective,
diff --git a/src/ng/directive/ngEventDirs.js b/src/ng/directive/ngEventDirs.js
index 4587ac89..ac860ab8 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 submit'.split(' '),
function(name) {
var directiveName = directiveNormalize('ng-' + name);
ngEventDirectives[directiveName] = ['$parse', function($parse) {
@@ -166,6 +166,54 @@ 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: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
*
* @description
@@ -176,7 +224,7 @@ forEach(
* attribute**.
*
* @element form
- * @param {expression} ngSubmit {@link guide/expression Expression} to eval.
+ * @param {expression} ngSubmit {@link guide/expression Expression} to eval. (Event object is available as `$event`)
*
* @example
<doc:example>
@@ -216,8 +264,3 @@ forEach(
</doc:scenario>
</doc:example>
*/
-var ngSubmitDirective = ngDirective(function(scope, element, attrs) {
- element.bind('submit', function() {
- scope.$apply(attrs.ngSubmit);
- });
-});
diff --git a/test/ng/directive/ngEventDirsSpec.js b/test/ng/directive/ngEventDirsSpec.js
index 4aa09fc5..5b73c2dd 100644
--- a/test/ng/directive/ngEventDirsSpec.js
+++ b/test/ng/directive/ngEventDirsSpec.js
@@ -21,5 +21,22 @@ describe('event directives', function() {
browserTrigger(element.children()[0]);
expect($rootScope.submitted).toEqual(true);
}));
+
+ it('should expose event on form submit', inject(function($rootScope, $compile) {
+ $rootScope.formSubmission = function(e) {
+ if (e) {
+ $rootScope.formSubmitted = 'foo';
+ }
+ };
+
+ element = $compile('<form action="" ng-submit="formSubmission($event)">' +
+ '<input type="submit"/>' +
+ '</form>')($rootScope);
+ $rootScope.$digest();
+ expect($rootScope.formSubmitted).not.toBeDefined();
+
+ browserTrigger(element.children()[0]);
+ expect($rootScope.formSubmitted).toEqual('foo');
+ }));
});
});