2012-10-05 7 views
7

私はAngularJSを評価していますが、これまでは非常に熱心です。しかし、検証前面に欠けている何かがあります:このようbuilt-in mechanismsAngularUI initiativeとして利用可能なオプションは、など、すべての検証はビューで宣言する必要があり、ディレクティブを通じてバリデータを実装して、この例ではAngularJSの検証戦略

<form ng-controller="SomeController"> 
    <!-- Notice the 'required' attribute directive below: --> 
    <input type="text" ng-model="user.name" name="uName" required /> 
</form> 

、ビューはuser.nameが必要であることを定義しています。これは、ビューがモデルの適切な形状を定義しているようなものです。それは少し後方ですか?ビューに状態が反映されるべきではありません(エラー状態を含む)。

私は間違っていますか? コントローラにバリデーターを適用し、モデルのデータを有効/無効として通知し、それに応じてビューを更新する(フォームコントロールを赤で表示、エラーメッセージの表示、以前のエラーのクリアなど)できますか?私はAngularJSがこれに十分強力だと仮定していますが、これまでのドキュメントやサンプルでは、​​私が上で説明したようなものは見たことがありません。ありがとう!

+0

「必須」はHTML5属性です。 http://html5doctor.com/html5-forms-introduction-and-new-attributes/また、 'input'' type'属性を 'email、tel、date、url、number'のようなものに設定することができます。それに応じて。 –

+0

また、私はAngularUI Validateを使ったことが一度もありません。ただ、まっすぐなAngularJSの検証をHTML5で使っています。 AngularUI Validateは、カスタム式の検証をフィールドに追加するためのものです。 –

答えて

1

私はそのすべてについて考えています。私が見ているのは、フォームを含むビューを定義しており、そのフォームにはテキストタイプの入力が含まれています。このテキスト入力は、必要に応じてマーキングしています。あなたが注意するならば、angleは、テキストがuser.nameかuser.ageか他のものであれば気にしません。そのテキスト入力を必須と関連付けるだけです。そのため、テキスト入力とそのモデルに関連付けられたモデルが最終結果(検証が成功すると値が入る場所)であることを検証するだけです。あなたはデフォルトのものではありません検証をやっているしたい場合

は、カスタムフォームの検証のための

http://docs.angularjs.org/guide/forms

を見てください。

事前に生成されているビューを知っているので(コンパイル時に呼び出すことができます)、ビュー内のすべてのバリデータを関連付けることができます。したがって、コントローラで実行する必要はありません時間の検証!)。