7

私は AngularJS を評価していますが、これまでのところ非常に熱心です。しかし、バリデーションの前に何かが欠けています:組み込みメカニズムAngularUI イニシアチブなどの利用可能なオプションは、ディレクティブを介してバリデーターを実装するため、すべてのバリデーションをビューで宣言する必要があります。

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

この例では、ビューはそれuser.nameが必要であることを定義しています。ビューがモデルの適切な形状を定義すると言っているようなものです。ちょっと後ろ向きじゃない?ビューは、エラー状態を含む状態を反映するべきではありませんか?

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

4

1 に答える 1

1

視点がすべてだと思います。私の見方では、フォームを含むビューを定義しており、そのフォームにはテキスト型の入力が含まれています。必須としてマークしているのは、このテキスト入力です。ご指摘のとおり、Angular はテキストが user.name か user.age か、またはその他のものであるかどうかを気にしません。そのテキスト入力を必須に関連付けるだけです。したがって、そのテキスト入力とそのモデルに関連付けられたモデルを検証するだけで、最終結果が得られます (検証に合格した場合に値が入る場所!)。

見て

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

デフォルトのものではない検証を行いたい場合は、カスタムフォームの検証用。

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

于 2012-10-06T08:59:05.973 に答える