2012-04-14 6 views
1

Ich erstelle eine benutzerdefinierte Komponente in Flex mit erweitert die BorderContainer Klasse, und ich möchte in der Lage sein, zusätzlichen Inhalt innerhalb der Tagset, wenn ich es in meiner Hauptanwendung verwenden, wie folgt:Flex Custom Component mit mehr Inside

<components:CustomComponent title="Hello"> 
    <s:Label text="If you have one enter it below:"/> 
    <mx:Spacer height="15" /> 

    <s:HGroup> 
     <s:TextInput width="250"/> 
     <s:Button label="Submit"/> 
    </s:HGroup> 
</components:CustomComponent> 

das funktioniert ganz gut, außer dass meine Komponentendefinition in der es einige zusätzliche Dinge hatte, wie ein <s:Label/> und Styling, die oben durch den Inhalt innerhalb des tagset ersetzt wird, wenn ich gehe, es zu benutzen.

Wenn ich nichts in das Tagset einfüge, wird der Inhalt, der ursprünglich in der Komponente enthalten war, nicht ersetzt.

Gibt es einen Weg, dass ich einfach zusätzlichen Inhalt innerhalb der Komponente anhängen kann, wenn ich es benutze, anstatt es jedes Mal zu ersetzen?

Vielen Dank für Ihre Zeit!

Antwort

1

Nicht "einfach", Sie müssen es umgehen. Hier ist eine Blog-Post mit den blutigen Details, einschließlich einer Beispielanwendung mit Quellcode: http://www.munkiihouse.com/?p=37 (Schritt 3)

Zusammengefasst Sie Skript die Klasse der untergeordneten Komponenten werden auf den Standard „Dummy“ Eigenschaft abzufangen und fügen Sie sie später zu Ihrer "Haupt" -Eigenschaft/Container hinzu.

Die Haupteigenschaft ist diejenige, in der Ihre vorhandenen Elemente in Ihrer benutzerdefinierten Komponentendefinition enthalten sind. Die Dummy-Eigenschaft ist die Standardeigenschaft, der eine Komponenteninstanz Elemente hinzufügen wird.

Viel Glück.

+0

Ausgezeichnet! Danke für den Link! –

+1

@ spryno724 Obwohl diese Lösung technisch funktioniert, ignoriert sie die Spark-Architektur völlig. Ein viel saubererer Ansatz wäre, einfach SkinnableContainer zu verwenden und eine benutzerdefinierte Skin dafür zu erstellen (eine, die das zusätzliche Label und Styling enthält). Schauen Sie sich [diese Antwort] an (http://stackoverflow.com/questions/9930740/what-is-the-hostcomponent/9931286#9931286), die eine Situation beschreibt, die Ihrer ähnlich ist (außer Sie nicht einmal muss SkinnableContainer unterlassen, weil Sie keine Eigenschaften haben, die Sie hinzufügen oder hinzufügen möchten. – RIAstar

+0

Schön! Danke! –