最近、angularJSフォームの検証に関するチュートリアルを次のように読みました。
<p ng-show="userForm.email.$invalid && !userForm.email.$pristine"></p>
しかし、私は思います !$pristine
および$dirty
は等しいので、代わりに以下のものを使用できますか?
<p ng-show="userForm.email.$invalid && userForm.email.$dirty"></p>
ユースケースによって、これら2つの属性にはわずかな違いがあると思います。
$ setDirty();フォームをダーティ状態に設定します。このメソッドを呼び出して、「ng-dirty」クラスを追加し、フォームをダーティ状態(ng-dirtyクラス)に設定できます。このメソッドは、親フォームにも伝播されます。
$ setPristine();フォームを元の状態に設定します。このメソッドを呼び出して、「ng-dirty」クラスを削除し、フォームを元の状態(ng-pristineクラス)に設定できます。このメソッドは、このフォームに含まれるすべてのコントロールにも伝播されます。フォームを元の状態に戻すことは、フォームを保存またはリセットした後にフォームを「再利用」する場合に役立つことがよくあります。
したがって、$ pristineと$ dirtyの両方を別の方法で使用できます。ただし、以下の投稿の「macrog」で言及されているように、ドキュメントを確認できます。
$ pristine booleanTrue-ユーザーがまだフォームを操作していない場合。
$ dirty booleanTrue-ユーザーがすでにフォームを操作している場合。
あなたはすべてを読むことができます ここ
$ pristine:ユーザーがまだフォームを操作していない場合はTRUEになります
$ dirty:ユーザーがすでにフォームを操作している場合はTRUEになります。
本質的に!$ pristine === $ dirty
しかし尊敬されているcssクラスを使用できます両方を使用する場合。
これらに従って、AngularJSは対応するCSSクラスも提供します。検証目的で使用できます。
ng-pristine
ng-dirty
使用法:
フォーム:myForm.$dirty
フィールドの場合:myForm.fieldName.$dirty
CSSの場合:
.ng-dirty{
background-color: yellow;
}