From e9e3ee012b50f868f4cd68f3571560680998a19b Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Tue, 13 Mar 2012 16:14:58 -0700 Subject: feat(compile): allow ngForm on attribute and class #feature - ngForm directive can now be used with element, class, and attributes --- src/AngularPublic.js | 2 +- src/directive/form.js | 53 ++++++++++++++++++++++++++------------------------- 2 files changed, 28 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/AngularPublic.js b/src/AngularPublic.js index d0a0e045..c922c5e2 100644 --- a/src/AngularPublic.js +++ b/src/AngularPublic.js @@ -80,7 +80,7 @@ function publishExternalAPI(angular){ ngClassOdd: ngClassOddDirective, ngCloak: ngCloakDirective, ngController: ngControllerDirective, - ngForm: formDirective, + ngForm: ngFormDirective, ngHide: ngHideDirective, ngInclude: ngIncludeDirective, ngInit: ngInitDirective, diff --git a/src/directive/form.js b/src/directive/form.js index 47274589..f4c96455 100644 --- a/src/directive/form.js +++ b/src/directive/form.js @@ -222,31 +222,32 @@ function FormController(name, element, attrs) { */ -var formDirective = [function() { - return { - name: 'form', - restrict: 'E', - inject: { - name: 'accessor' - }, - controller: FormController, - compile: function() { - return { - pre: function(scope, formElement, attr, controller) { - formElement.bind('submit', function(event) { - if (!attr.action) event.preventDefault(); - }); +var formDirectiveDev = { + name: 'form', + restrict: 'E', + inject: { + name: 'accessor' + }, + controller: FormController, + compile: function() { + return { + pre: function(scope, formElement, attr, controller) { + formElement.bind('submit', function(event) { + if (!attr.action) event.preventDefault(); + }); - var parentFormCtrl = formElement.parent().inheritedData('$formController'); - if (parentFormCtrl) { - formElement.bind('$destroy', function() { - parentFormCtrl.$removeControl(controller); - if (attr.name) delete scope[attr.name]; - extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards - }); - } + var parentFormCtrl = formElement.parent().inheritedData('$formController'); + if (parentFormCtrl) { + formElement.bind('$destroy', function() { + parentFormCtrl.$removeControl(controller); + if (attr.name) delete scope[attr.name]; + extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards + }); } - }; - } - }; -}]; + } + }; + } +}; + +var formDirective = valueFn(formDirectiveDev); +var ngFormDirective = valueFn(extend(copy(formDirectiveDev), {restrict:'EAC'})); -- cgit v1.2.3