Question

J'ai un Flex 3 application en vue d'une ViewStack, et ce point de vue ne doit être créé sur demande. Je l'ai déclaré validateurs pour chacun des contrôles sur la vue et j'ai créé une méthode appelée checkAllValid () qui fonctionne Validator.validateAll (). Cela fonctionne très bien quand je suis en fait à l'aide des commandes (en utilisant le changement ou d'événements focusOut), mais comment puis-je checkAllValid () pour exécuter lorsque la vue est d'abord affichée à l'utilisateur, de sorte qu'ils sont immédiatement affichés ce qui est une fois invalide les données est rempli dans les contrôles?

Je l'ai essayé de mettre l'appel à divers événements sur la vue elle-même (par exemple creationComplete, updateComplete, spectacle, activer, etc.), mais il montre toujours l'erreur suivante lorsque je démarre l'application:

L'attribut source doit être spécifié lorsque l'attribut propriété est spécifiée.

J'ai aussi essayé de placer la creationPolicy sur la vue de « tous », mais cela ne suffit pas.

Certains des validateurs ne sont activés que lorsque la forme est dans un certain état, mais je n'ai éliminé que comme étant le problème potentiel en commentant tous mes validateurs, sauf pour ce plus simple:

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

La méthode checkAllValid () est aussi simple que suit:

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

J'ai aussi essayé d'appeler directement le validateur unique plutôt que d'utiliser validateAll et le résultat est le même.

S'il vous plaît aider! Il doit y avoir une manière que je peux forcer en vue de valider quand il apparaît ....

(par la façon dont il est dans le cadre Cairngorm MVC et je les données liées aux contrôles)

Était-ce utile?

La solution

Je l'ai! J'ai ajouté des validateurs similaires à une autre vue et ils a bien fonctionné. Quelle était la différence? La méthode qui a appelé checkAllValid () a été appelé sur l'événement creationComplete d'un conteneur interne - pas le composant principal de la vue.

Donc à la fin il n'y avait rien à voir avec la validation elle-même - il suffit de ne pas me comprendre pleinement l'ordre de création.

Je vais laisser la question ici juste au cas où quelqu'un rencontre un problème similaire avec l'ordre de création.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top