Pergunta

Eu tenho um aplicativo Flex 3 com visualização em um ViewStack, e essa visualização deve ser criada apenas quando solicitada. Declarei validadores para cada um dos controles na visualização e criei um método chamado checkAllValid () que executa o validator.validateAll (). Isso funciona muito bem quando estou realmente usando os controles (usando os eventos de mudança ou foco), mas como posso obter o checkAllValid () para executar quando a visualização é exibida pela primeira vez ao usuário, para que eles sejam imediatamente mostrados o que é inválido uma vez Os dados são preenchidos nos controles?

Eu tentei colocar a chamada em vários eventos na própria exibição (por exemplo, criação de completa, updateComplete, mostrar, ativar etc.), mas ela sempre mostra o seguinte erro quando inicio o aplicativo:

'O atributo de origem deve ser especificado quando o atributo da propriedade é especificado.'

Eu também tentei definir o CreationPolicy na vista para "tudo", mas isso não ajuda.

Alguns dos validadores são ativados apenas quando o formulário está em um determinado estado, mas eu eliminei isso como sendo o problema em potencial, comentando todos os meus validadores, exceto por este mais simples:

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

O método checkallValid () é tão simples quanto a seguinte:

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

Também tentei ligar para o validador único diretamente, em vez de usar o Validateall e o resultado é o mesmo.

Por favor ajude! Deve haver uma maneira de forçar a visão para validar quando for mostrada ....

(A propósito, está na estrutura do MVC de Cairngorm e eu tenho dados vinculados aos controles)

Foi útil?

Solução

Entendi! Adicionei validadores semelhantes a outra visão e eles funcionaram bem. Qual foi a diferença? O método que chamado checkAllValid () estava sendo chamado no evento CreationComplete de um Contêiner interno - Não é o componente de visualização principal.

Portanto, no final, não havia nada a ver com a própria validação - apenas eu não entendi completamente a ordem de criação.

Deixarei a pergunta aqui, caso alguém encontre um problema semelhante com a ordem de criação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top