Flex 3: Atribuição dos dados para um subcomponente falha em um componente MXML no bloco de script de ação

votos
0

Eu estou tentando propagar uma atribuição para o parâmetro de dados de um sub-componente através da sua setter do componente pai. Como isso:

<CustomComponent
     xmlns:mx=http://www.adobe.com/2006/mxml
     xmlns=components.*
    >
    <mx:Script>
        <![CDATA[
            public override function set data(val:Object):void
            {
                super.data = val;

                subComponent.data = val; //ref #1
            }
        ]]>
    </mx:Script>
    <CustomSubComponent id=subComponent
        />
</CustomComponent>

Quando eu corri a minha candidatura, o sub-componente nunca recebeu seus dados. Quando a depuração e pisar a linha marcada ref # 1, o depurador salta para fora do método e continua para outra coisa, como se o método foi completa. Parece que alguma exceção ou erro foi jogado, mas o console não dá nenhuma indicação do que está errado com esta atribuição.

Estou fazendo algo estúpido aqui? Parece bastante simples.

Ambiente: Este é usando Flex SDK 3.2, com o plugin Flex Builder 3 para Eclipse no Windows, com o Flash 9 Debug ver. para IE7.

Nota: Com este exemplo em particular eu estou tentando evitar Encadernação de propósito. Quero dizer, por que não posso empurrar manualmente os dados para o sub-componente em vez de obrigatório é?

Publicado 26/08/2009 em 23:20
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

Flex suprime erros dentro de setters de dados, porque o material é frequentemente nulo. O problema é provavelmente que o seu subcomponente não é inicializado quando os dados conjunto é chamado. Se você realmente não pode usar ligação (o caminho mais fácil e limpo), então você deve atrasar a configuração dos dados do subcomponente até que seja inicializada com invalidateProperties / commitProperties.

No setter de dados, chamar invalidateProperties () e definir um sinalizador dizendo que eles mudaram.

Substituir commitProperties (não se esqueça de chamar super), verifique a bandeira, e se é verdade, definir os dados do subcomponentes.

Se seus commitProperties bloquear nunca é chamado, tente invalidateProperties sobre creationComplete.

Respondeu 27/08/2009 em 22:13
fonte usuário

votos
0

Que componentes são o seu componente personalizado e sub componente com base em? O que eles estender?

Eu tentei um exemplo básico estendendo HBox e VBox e tudo correu bem.

Você pode ver o resultado aqui , vista de origem ativado.

Eu estou supondo que eu não tive problemas porque eu estou estendendo componentes que são adicionados à lista de exibição por isso é parte do que eles estão ciclo de vida de verificar com os pais para medições / dados / etc.

Espero que ajude

Respondeu 27/08/2009 em 00:25
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more