防止したい-フォームへの入力時に電子メールがnullの場合、http-post to '/ signUp'のデフォルトアクション。
コントローラーコード:-
$scope.signUp = function() {
if($scope.email = null);
preventdefault;
}
html(翡翠):-
form(name="input", action="/signUp", method="post")
input(type="submit", value="submit")
フォームにaction属性を指定している場合、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()関数が呼び出され、バックエンド/ signupへのajax投稿またはさらなる検証に進むことができます。入力に適切な検証属性(type = "email"やrequiredなど)を使用することで、angularjsはいくつかの基本的な検証を実行することに注意してください。送信ボタンに追加のng-disabled="!myForm.$valid"
を追加して、電子メールが正しく入力されていない間、ボタンを無効のままにしておくことができます。
私の例のように入力でng-modelを使用すると、スコープは$scope.newSignup
オブジェクトを取得します。これは、さらに検証するためにsignUp()関数でチェックインできます。
$scope.signUp = function(htmlForm) {
if ($scope.newSignup.email !== '[email protected]') {
return false; // you should really show some info to the user
}
...
}