2011-09-04 14 views
11

私はExtJSを学んでいます。私は論理的に私に接続されているように見える2つの異なるコンセプトに出くわしました。ExtJS:モデルに対するフォームの検証

  1. モデルクラスでは、フィールドにカスタム検証メソッドを指定できます。
  2. モデルインスタンスをフォームに読み込んでフォームから取得できます。

私の質問は:

  1. それはフォームはユーザーが入力するもの検証し、リアルタイムのフィードバックを表示するには、モデルの検証セットアップを使用することは可能ですか?
  2. 1の答えがいいえの場合、フォームにリアルタイム検証を設定する他の方法はありますか?

おかげ

答えて

4

1.それはフォームが に対するモデルの検証の設定は、ユーザーが入力したものを検証し、リアルタイムのフィードバックを示し使うことは可能ですか?

モデルのリアルタイム検証のための組み込み機能はありません。しかし、モデルの検証を使用するより良い方法があります。

2. 1への答えがノーであれば、フォームで リアルタイム検証を設定するための他の方法はありますか?

はい、あります。
フォームのフィールドはvtypeの設定をサポートしています(詳細はhereを参照してください)。デフォルトでは、フィールドの値が変更されるたびにこのフィールドが検証されます(この動作セットのフィールドvalidateOnChangeの設定をfalseにするには)。

詳細については、docsValidationセクションとExample usageセクションを参照)をご覧ください。分子マンが言うように

+0

私は、モデルを使って検証するカスタムFormPanelを書く必要があると思います。おそらく、サポートする "FormValidatingModel"も書く必要があります。 – jrharshath

6
  1. 、何のビルトインこのための機能、しかし...

  2. これは、一般的に必要な機能(とのExt JS 4が少し見えるの何かがあるように思われていません半焼き)、そして他の人々は、さまざまなソリューションが出ている:

最初の提案は、フォームフィールドをModelフィールドにバインドし、フォームフィールドで定義された検証とフォームフィールドを検証するために、Ext.form.field.Baseクラスを変更しますバインドされたModelフィールド

私はちょうど最初の提案をテストしようとしていて、それがどのように進むのかに関するアップデートを投稿するかもしれません...

+0

アプローチについての経験はありましたか? – lacco

+0

私は最初の解決策をいくつか変更してうまく機能しています。[リンク](http://www.sencha.com/forum/showthread.php?125242-Form-lt-gt-Model-binding&p=715024&viewfull=1 #post715024) –

関連する問題