feat(form): do not prevent submission if action attribute present

This commit is contained in:
Vojta Jina 2011-11-24 19:28:09 -08:00 committed by Igor Minar
parent 163e05ed36
commit c9f2b1eec5
3 changed files with 19 additions and 4 deletions

View file

@ -524,9 +524,8 @@ angularDirective("ng:click", function(expression, element){
angularDirective("ng:submit", function(expression, element) {
return function(element) {
var self = this;
element.bind('submit', function(event) {
element.bind('submit', function() {
self.$apply(expression);
event.preventDefault();
});
};
});

View file

@ -61,8 +61,8 @@ angularWidget('form', function(form){
parentForm = $formFactory.forElement(formElement),
form = $formFactory(parentForm);
formElement.data('$form', form);
formElement.bind('submit', function(event){
event.preventDefault();
formElement.bind('submit', function(event) {
if (!formElement.attr('action')) event.preventDefault();
});
if (name) {
this[name] = form;

View file

@ -29,6 +29,22 @@ describe('form', function() {
}));
it('should not prevent form submission if action attribute present',
inject(function($compile, $rootScope) {
var callback = jasmine.createSpy('submit').andCallFake(function(event) {
expect(event.isDefaultPrevented()).toBe(false);
event.preventDefault();
});
doc = angular.element('<form name="x" action="some.py" />');
$compile(doc)($rootScope);
doc.bind('submit', callback);
browserTrigger(doc, 'submit');
expect(callback).toHaveBeenCalledOnce();
}));
it('should publish form to scope', inject(function($rootScope, $compile) {
doc = angular.element('<form name="myForm"></form>');
$compile(doc)($rootScope);