私は質問が古いことを知っていますが、素晴らしい新しい角度ディレクティブを世界と共有したいと思います.Githubでプロジェクトを作成しました. PHP フレームワークを開発し、Angular で利用できるようにしました。
<!-- example 1 -->
<label for="input1">Simple Integer</label>
<input type="text" validation="integer|required" ng-model="form1.input1" name="input1" />
<!-- example 2 -->
<label for="input2">Alphanumeric + Exact(3) + required</label>
<input type="text" validation="alpha|exact_len:3|required" ng-model="form1.input2" name="input2" />
したがって、単純なディレクティブで必要な検証ルールをいくらでも定義できvalidation="min_len:2|max_len:10|required|integer"
、エラー メッセージは常に次のディレクティブに表示され<span>
ます。入力用の1 行のコード、エラー表示用の 1 行のコード、それよりも簡単にすることはできません...ああ、追加したい場合はカスタム正規表現もサポートします:)
10行のクラスター化されたフォームはもうありません必要なのは 2 行だけで、5 つのバリデーターを含む入力の場合でも、1 つの入力のコードのコードです。フォームが無効にならないように心配する必要はありません。
私の Github プロジェクトAngular-Validationを見て、その言葉を広めてください =)
EDIT
ユーザー エクスペリエンスをさらにスムーズにするために、タイマーの検証を追加しました。コンセプトはシンプルで、入力に忙しい間はユーザーを悩ませず、ユーザーが一時停止したり入力を変更したりした場合は検証します (onBlur)... 気に入りました!!!
好みに応じてタイマーをカスタマイズすることもできます。ディレクティブ内でデフォルトを 1 秒に設定することにしましたが、カスタマイズしたい場合は、たとえばtyping-limit="5000"
5 秒にするために呼び出すことができます。タイムアウト。完全な例:
<input type="text" validation="integer|required" typing-limit="5000" ng-model="form1.input1" name="input1" />
EDIT #2
また、入力一致確認検証 (例: パスワード確認) を追加しました。サンプル コードは次のとおりです。
<!-- input match confirmation, as for example: password confirmation -->
<label for="input4">Password</label>
<input type="password" name="input4" ng-model="form1.input4" validation="alpha|min_len:4|required" />
<label for="input4c">Password Confirmation</label>
<input type="password" name="input4c" ng-model="form1.input4c" validation="match:form1.input4,Password|required" />
編集 #3
ディレクティブをリファクタリングして<span>
、エラーを表示する必要がないようにしました。ディレクティブはエラーを単独で処理するようになりました。コードの変更が一番上に反映されていることを確認してください。
DEMO
にライブデモを追加しましたPlunker