私はフォームの側面に表示されるリストに要素を追加するためにフォームを使用しています。 マークアップは次のとおりです。AngularJs空のフォームと入力から無効な状態を削除
<form name="thingForm">
<input required type="text" ng-model="thing.name"/>
<input required type="text" ng-model="thing.value"/>
<input type="submit" ng-click="addThing(thing)"/>
</form>
<ul>
<li ng-repeat="thing in things">{{thing.name}} with value of {{thing.value}}</li>
</ul>
そして、私が持っているコントローラで:
$scope.things = [];
$scope.addThing = function(thing) {
$scope.things.push(thing);
$scope.thing = {};
};
の作業jsfiddle:http://jsfiddle.net/cXU2H/1/
今、あなたが見ることができるよう、私はしかし、モデルを空にすることによって、フォームを空にすることができます入力には必須のタグがあるため、ブラウザにはエラーメッセージが表示されます(少なくともChromeの場合)。
私は同様の質問を見て:jsfiddleは私の例のようにまったく同じ動作をしますがhttps://stackoverflow.com/a/16296941/545925::私もこの答えを見てきました
- 入力がクリアされた後、それはまだ
ng-invalid-required
を持っています私は1.1.xのブランチ$setPristine()
にいないよので、 残りの(と、それはまた、HTML5のエラーメッセージをトリガーする)クラスは私のために利用できない$setPristine()
は同じよう
もちろん、フォームの要素を反復処理し、すべてのng-invalid-required
とng-invalid
クラスを削除する関数を書くことはできますが、これは私がこれを解決したい方法ではありません。それがjQueryのやり方です。
'$ setPristine()'は正しいアプローチです。 1.1.xに切り替える必要がない場合は、このコミットであなたのバージョンをmonkey-patchしてください:https://github.com/angular/angular.js/commit/733a97adf87bf8f7ec6be22b37c4676cf7b5fc2b –
1.1.xブランチは、 1.0.xバージョン? – adamors
1.1.xにはかなりの変更点があり、大きな変更点があります。 changelogを参照してください:https://github.com/angular/angular.js/blob/master/CHANGELOG.md –