2009-07-29 1 views
1

Viewstackにビューを持つFlex 3アプリケーションがあり、そのビューは要求されたときにのみ作成する必要があります。ビューの各コントロールのバリデータを宣言し、Validator.validateAll()を実行するcheckAllValid()というメソッドを作成しました。これは、実際にコントロールを使用しているとき(changeイベントやfocusOutイベントを使用して)は効果的ですが、ビューが最初に表示されたときにcheckAllValid()を実行して、データはコントロールに入力されますか?コンテナが表示されたときにFlexの検証を強制する方法

私はビュー自体に様々なイベントにコールを入れてみました(例えばのcreationComplete、updateComplete、ショー、活性化させる、など)が、私は、アプリケーションを起動したとき、それは常に次のエラーを示しています

「プロパティ属性が指定されている場合はsource属性を指定する必要があります。

ビューのcreationPolicyを "all"に設定しようとしましたが、これは役に立ちません。

フォームが特定の状態にあるが、私はこの最も簡単なものを除いて、私のバリデータのすべてをコメントアウトすることによって潜在的な問題点として、ということを排除したときのバリデータの一部のみが有効になります。

<mx:Array id="validators"><mx:StringValidator id="val_Address1" source="{Address1}" property="text" required="true" triggerEvent=""/></mx:Array> 

checkAllValid()メソッドは次のように簡単です:

private function checkAllValid():void{    
     var validationErrors: Array = Validator.validateAll(validators);   
} 

Iはまた、単一のバリデータを呼び出すことなく、直接validateAllを使用して、結果が同じである試みました。

助けてください!

答えて

0

がそれを手に入れた(それはケアンゴームMVCフレームワークの中でだと私はコントロールにバインドされたデータを持っている方法によって)

....私はそれが示されたときに検証するためにビューを強制することができる方法があるに違いありません!私は別のビューに同様のバリデータを追加し、正常に動作しました。違いは何ですか? checkAllValid()を呼び出すメソッドが、内部コンテナのcreationCompleteイベントで呼び出されました - メインビューコンポーネントではありません。

最終的には検証自体とは関係なく、私は創造の順序を完全に理解していません。

誰かが作成順に同様の問題が発生した場合に備えて、ここに質問を残します。

関連する問題