Flex 3: Atribuirea de date într-o subcomponentă eșuează într-o componentă MXML în blocul de script-ul de acțiune

voturi
0

Am încercat să propage o misiune la parametrul de date al unei subcomponente prin e setter componentă părinte. Asa:

<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>

Când am fugit cererea mea, sub-componenta nu a primit datele sale. Atunci când depanare și pas cu pas la linia de marcat „ref # 1“, debugger sare din metoda si continua altceva ca și în cazul în care metoda a fost completă. Se pare că a fost aruncat o anumită excepție sau eroare, dar consola nu oferă nici o indicație a ceea ce este în neregulă cu această misiune.

Fac ceva prost aici? Se pare destul de drept înainte.

Mediu: Aceasta este folosind Flex SDK 3.2, cu Flex Builder 3 plugin pentru Eclipse pe Windows, cu Flash 9 Debug ver. pentru IE7.

Notă: Cu acest exemplu am încercat să evite Binding intenționat. Adică, de ce nu pot împinge manual datele la sub-componenta, mai degrabă decât obligatoriu?

Întrebat 26/08/2009 la 23:20
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
2

Flex suprima erori în interiorul setteri de date, pentru că lucrurile este frecvent nulă. Problema este, probabil, că subcomponenta nu este inițializat atunci când setul de date este numit. Dacă într-adevăr nu se poate utiliza (mod simplu și curat) cu caracter obligatoriu, atunci ar trebui să întârzie stabilirea datelor subcomponenta până când este inițializată cu invalidateProperties / commitProperties.

În setter de date, suna invalidateProperties () și a stabilit un steag spunând că au schimbat.

Override commitProperties (nu uitați pentru a apela super-), verificați pavilion, și, dacă este adevărat, setul de date subcomponenta lui.

Dacă commitProperties dvs. de blocare nu este chemat, încercați invalidateProperties pe creationComplete.

Publicat 27/08/2009 la 22:13
sursa de către utilizator

voturi
0

Ce componente sunt componente personalizate și de o componentă bazată pe? Ce se extind?

Am încercat un exemplu de bază care se extinde HBox și VBox și totul a mers bine.

Puteti vedea rezultatul aici , vizualizare sursă activată.

Cred că am avut nici o probleme, deoarece eu sunt extinderea componente care sunt adăugate la lista de afișare astfel încât este o parte din ele sunt ciclu de viață pentru a verifica cu părinții pentru măsurători / date / etc.

Sper ca ajuta

Publicat 27/08/2009 la 00:25
sursa de către utilizator

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