1

ビュースタックにビューを持つFlex3アプリがあり、そのビューは要求された場合にのみ作成する必要があります。ビューの各コントロールのバリデーターを宣言し、Validator.validateAll()を実行するcheckAllValid()というメソッドを作成しました。これは、実際にコントロールを使用している場合(changeイベントまたはfocusOutイベントを使用している場合)はうまく機能しますが、ビューが最初にユーザーに表示されたときにcheckAllValid()を実行して、一度無効なものがすぐに表示されるようにするにはどうすればよいですか?データはコントロールに入力されていますか?

ビュー自体のさまざまなイベント(creationComplete、updateComplete、show、activateなど)で呼び出しを実行しようとしましたが、アプリケーションを起動すると常に次のエラーが表示されます。

'プロパティ属性を指定する場合は、ソース属性を指定する必要があります。

ビューの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);        
}

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

助けてください!ビューが表示されたときにビューを強制的に検証できる方法が必要です。

(ちなみに、それはCairngorm MVCフレームワークにあり、データはコントロールにバインドされています)

4

1 に答える 1

0

とった!同様のバリデーターを別のビューに追加しましたが、正常に機能しました。違いは何でしたか?checkAllValid()を呼び出したメソッドは、メインビューコンポーネントではなく、内部コンテナのcreationCompleteイベントで呼び出されていました。

したがって、最終的には、検証自体とは何の関係もありませんでした。作成順序を完全に理解していなかっただけです。

誰かが作成順序で同様の問題に遭遇した場合に備えて、ここに質問を残しておきます。

于 2009-07-29T13:01:23.513 に答える