AngularJs。$ setPristineでフォームをリセットします



Angularjs Setpristine Reset Form



解決:

$ setPristine()は、angularjsの1.1.xブランチで導入されました。それが機能するためには、1.0.7ではなくそのバージョンを使用する必要があります。

http://plnkr.co/edit/815Bml?p=previewを参照してください




同様の問題があり、フォームを元の状態に戻す必要がありましたが、$ invalidと$ errorの両方がエラーメッセージの表示に使用されていたため、そのままの状態に戻す必要がありました。 setPristine()を使用するだけでは、エラーメッセージをクリアするのに十分ではありませんでした。

setPristine()とsetUntouched()を使用して解決しました。 (Angularのドキュメントを参照してください:https://docs.angularjs.org/api/ng/type/ngModel.NgModelController)



したがって、私のコントローラーでは、次のものを使用しました。

$ scope.form.setPristine(); $ scope.form.setUntouched();

これらの2つの関数は、フォーム全体を$ pristineにリセットして$ untouchedに戻すため、すべてのエラーメッセージがクリアされます。


取得したい人のためだけに$ setPristineは、v1.1.xにアップグレードする必要はありません。これは、シミュレーションに使用した関数です。$ setPristine関数。使用したAngularUIコンポーネントの1つに互換性がないため、v1.1.5の使用には消極的でした。



var setPristine = function(form){if(form。$ setPristine){// v1.1.xからのみサポートform。$ setPristine(); } else {/ * *ループフォームのプロパティにアンダースコアを付けると、forループも次のように使用できます。* for(var i in form){* var input = form [i]; ... * / _.each(form、function(input){if(input。$ dirty){input。$ dirty = false;}}); }};

それは作るだけであることに注意してください$ dirtyフィールドはクリーンになり、「エラーの表示」条件を次のように変更するのに役立ちます$ scope.myForm.myField。$ dirty && $ scope.myForm.myField。$ invalid。

フォームオブジェクトの他の部分(cssクラスなど)も考慮する必要がありますが、これで問題が解決します。エラーメッセージを非表示にします。