Итак, у меня есть форма angular, метод отправки которой дважды ударяется, и я не могу понять, почему. Я новичок в Angular, поэтому возможно, что я пропускаю что-то довольно простое...
Html:
<div ng-app="RegistrationApp" ng-controller="RegistrationController">
<form name="accountForm" ng-submit="submitAccount($event, accountForm, account)" novalidate>
// inputs here...
<button type="submit" class="btn btn-success pull-right" ng-disabled="accountForm.$invalid">Submit</button>
</form>
</div>
Js:
var RegistrationApp = angular.module('RegistrationApp', []);
RegistrationApp.controller('RegistrationController', function ($scope) {
$scope.submitAccount = function (evt, form, account) {
console.log('submitAccount() hit');
console.log(evt);
console.log(form);
evt.stopPropagation();
// AJAX code
});
});
Консольное окно:
submitAccount() hit
o.Event {originalEvent: Event, type: "submit", isDefaultPrevented: function, timeStamp: 1394139847226, jQuery210012237170152366161: true…}
c {$error: Object, $name: "accountForm", $dirty: true, $pristine: false, $valid: true…}
submitAccount() hit
o.Event {originalEvent: Event, type: "submit", isDefaultPrevented: function, timeStamp: 1394139847226, jQuery210012237170152366161: true…}
Constructor {$error: Object, $name: "accountForm", $dirty: true, $pristine: false, $valid: true…}
Итак, первое, что я пробовал, это прекратить распространение этого события, но это не имеет никакого реального эффекта. Пройдя через объекты события, они кажутся одинаковыми. Единственное, что отличается, - это объект "формы". Свойства одинаковы, за исключением того, что один показывает, что "c", а другой показывает "Constructor".
Любые идеи, которые могут вызвать двойное срабатывание? В обоих случаях целевой объект устанавливается в элемент формы, и я не использую какие-либо функции onclick или любые другие типы событий в форме.