web-dev-qa-db-ja.com

anglejsの!$ pristineと$ dirtyの違いは何ですか

最近、angularJSフォームの検証に関するチュートリアルを次のように読みました。

<p ng-show="userForm.email.$invalid && !userForm.email.$pristine"></p>

しかし、私は思います !$pristineおよび$dirtyは等しいので、代わりに以下のものを使用できますか?

<p ng-show="userForm.email.$invalid && userForm.email.$dirty"></p>
6
hh54188

ユースケースによって、これら2つの属性にはわずかな違いがあると思います。

$ setDirty();フォームをダーティ状態に設定します。このメソッドを呼び出して、「ng-dirty」クラスを追加し、フォームをダーティ状態(ng-dirtyクラス)に設定できます。このメソッドは、親フォームにも伝播されます。

$ setPristine();フォームを元の状態に設定します。このメソッドを呼び出して、「ng-dirty」クラスを削除し、フォームを元の状態(ng-pristineクラス)に設定できます。このメソッドは、このフォームに含まれるすべてのコントロールにも伝播されます。フォームを元の状態に戻すことは、フォームを保存またはリセットした後にフォームを「再利用」する場合に役立つことがよくあります。

したがって、$ pristineと$ dirtyの両方を別の方法で使用できます。ただし、以下の投稿の「macrog」で言及されているように、ドキュメントを確認できます。

13
Rudra

$ pristine booleanTrue-ユーザーがまだフォームを操作していない場合。

$ dirty booleanTrue-ユーザーがすでにフォームを操作している場合。

あなたはすべてを読むことができます ここ

6
macrog

$ pristine:ユーザーがまだフォームを操作していない場合はTRUEになります

$ dirty:ユーザーがすでにフォームを操作している場合はTRUEになります。

本質的に!$ pristine === $ dirty

しかし尊敬されているcssクラスを使用できます両方を使用する場合。

これらに従って、AngularJSは対応するCSSクラスも提供します。検証目的で使用できます。

ng-pristine
ng-dirty

使用法:

フォーム:myForm.$dirty

フィールドの場合:myForm.fieldName.$dirty

CSSの場合:

.ng-dirty{
 background-color: yellow;
}
1
Arno_Geismar