Предотвратить дефолт по подаче: - Angularjs

Я хочу запретить действие по умолчанию http-post в '/signUp', если адрес электронной почты равен нулю при заполнении формы.

Код контроллера: -

$scope.signUp = function() {

  if($scope.email = null);
    preventdefault;

}

html (jade): -

form(name="input", action="/signUp", method="post")
  input(type="submit", value="submit")

Ответ 1

Если у вас есть атрибут действия, указанный для формы, angularjs не будет делать preventDefault. Если вы удалите его и добавьте вместо него ng-submit:

<form name="myForm" method="post" ng-submit="signUp(myForm)" novalidate>
    <input type="email" name="email" ng-model="newSignup.email" required>
    <button type="submit">sign up</button>
</form>

В этом случае форма всегда будет иметь preventDefault и при отправке вашей функции $scope.signUp() вызывается, где вы можете продолжить запись ajax на бэкэнд/регистрацию или дополнительную проверку. Обратите внимание, что, используя правильные атрибуты проверки на ваших входах (например, type = "email" и обязательно), angularjs выполнит некоторую базовую проверку для вас. Вы можете добавить дополнительную кнопку ng-disabled="!myForm.$valid" в кнопку отправки, чтобы кнопка не была отключена, пока письмо не было правильно введено.

Используя ng-модель на входах, как в моем примере, ваша область получит объект $scope.newSignup, который вы можете проверить в своей функции signUp() для дальнейшей проверки:

$scope.signUp = function(htmlForm) {
    if ($scope.newSignup.email !== '[email protected]') {
       return false;  // you should really show some info to the user
    }
    ...
}