コンテナが表示されたときにFlexの検証を強制する方法
-
20-09-2019 - |
質問
私はのViewStack内のビューとFlex 3のアプリを持っており、要求されたとき、そのビューにのみ作成する必要があります。私は、ビュー上の各コントロールのためのバリデータを宣言していると私はValidator.validateAll()を実行しますcheckAllValid(と呼ばれるメソッド)を作成しました。彼らはすぐに一度無効であるものを示しているように、ビューは、ユーザーに最初に表示されたときに実行するように)私は実際に(変更またはfocusOutイベントを使用して)コントロールを使用していますが、どのように私は(checkAllValidを得ることができたときにこれは素晴らしい作品データはコントロールに移入された?
私は(例えばのcreationComplete、updateComplete、ショー、活性化させる、など)ビュー自体に様々なイベントにコールを入れて試してみましたが、私は、アプリケーションを起動するときは、常に次のエラーを示しています:
'property属性が指定されているときに、ソース属性を指定する必要があります。' の
私はまた、「すべて」を視野にcreationPolicyを設定しようとしたが、これは役立ちません。
バリのいくつかは、フォームが特定の状態にあるときにのみ有効になっていますが、私はこの最も簡単なものを除いて、私のバリデータのすべてをコメントアウトすることによって潜在的な問題点として、ということを排除しています:
<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);
}
私はまたvalidateAllつのバリデータを呼び出すことなく直接使用して試してみましたが、結果は同じです。
助けてください!私はそれが示されたときに検証するためにビューを強制することができる方法があるに違いありません....
(ところで、それはケアンゴームMVCフレームワークの中でだと私はコントロールにバインドされたデータを持っている)。
解決
は、それを手に入れました!私は別のビューに類似したバリデータを追加し、彼らがうまく働きました。違いは何でしたか?ないメインビューコンポーネント - checkAllValidと呼ばれる方法は、()、内部容器のcreationCompleteイベントで呼び出されていました。
だから、最後には、検証自体とは何の関係もなかった - 私だけでは完全に作成順序を理解していません。
私は誰かが作成順序と同様の問題に遭遇しただけの場合には、ここに質問を残しておきます。