3

仲間の開発者からプロジェクトを継承した後、AngularJS を使用するのはまだ 1 日目です。アイテム/フォームが送信されると非表示になるログイン/登録フォームがインターフェイスにあります。ユーザーが送信したら、そのエントリのフォームをクリアし、アイテムの .ng-pristine クラスを復元​​する正しいまたは適切な方法があります。この理由は、ユーザーがログアウトしてから再度ログインすることを選択した場合 (または別のユーザーが登録したい場合)、フォームに入力され、検証 css が既に適用されているためです。私はこれを望んでいません。すべてを空にして、CSS を適用しないようにしたいと思います。

私はJavaScriptでこれを行うことができます(明らかに)が、AngularJSは別のアプローチであるため、フォームアイテムをループして値をクリアしながら各アイテムにクラスを追加するのではなく、別の方法でこの問題にアプローチする必要があるかどうか疑問に思っていました.

これは私のフォームの例です

<form name="signupForm" novalidate ng-submit="register(user)">
    <div><label for="email">email:</label><input type="email" id="email" name="email" required ng-model="user.email" ng-minlength=4></div>
    <div><label for="userName">Username:</label><input type="text" name="userName" id="userName" ng-model="user.userName" required ng-pattern="/^[A-Za-z0-9 \-_.]*$/" ng-minlength=4></div>
    <div><label for="firstName">Vorname:</label><input type="text" name="firstName" id="firstName" ng-model="user.firstName" required  ng-pattern="/^[A-Za-z \-_.]*$/" ng-minlength=3></div>
    <div><label for="lastName">Nachname:</label><input type="text" name="lastName" id="lastName" ng-model="user.lastName" required ng-pattern="/^[A-Za-z \-_.]*$/" ng-minlength=4></div>
    <div><label for="password1">Passwort:</label><input type="password" name="password1" id="password1" ng-model="user.password1" required ng-minlength=4></div>
    <div><label for="password2">Passwort wiederholen:</label><input type="password" name="password2" id="password2" ng-model="user.password2" valid-password2 ng-minlength=4 pw-check="password1"></div>

... and so on

どうもありがとう

4

3 に答える 3

2

フォームは、その名前の下の正しいスコープに表示されます$scope.signupForm。さらに、フォームに入力するオブジェクトは$scope.user. コントローラーで、次のようにします。

$scope.user = {}; // or new User() if it is your case
$scope.signupForm.$setPristine();

の場合、コントローラー$scope.signupFormundefinedフォームに直接配置し、上記のコード (およびその他の該当するもの) をこの新しいコントローラー内に配置します。

<form name="signupForm" novalidate ng-submit="register(user)"
    ng-controller="NewCtrl">

(これは、元のコントローラーの下にネストされたスコープが原因で発生する可能性があります。)

于 2013-09-23T14:31:49.077 に答える
1

この投稿を参照してください:

フォームを元の状態にリセットする (AngularJS 1.0.x)

主な質問では、AngularJS の問題とプル リクエストへの参照を得ました。履歴書では、フォームに $setPristine() メソッドを使用する必要があります。

それが役に立てば幸い !

于 2013-09-23T14:31:24.697 に答える