我有一个角度表单,其提交方法被击中两次,我不知道为什么。我对 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
函数或表单中的任何其他类型的事件。