submit メソッドが 2 回ヒットしている角度のあるフォームがあり、その理由がわかりません。私は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>
J:
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」を示しています。
これが2回トリガーされる原因は何ですか? どちらの場合もイベント ターゲットはフォーム要素に設定されており、フォーム内でonclick
関数やその他の種類のイベントを使用していません。