Thanks yet again Tracy for helping me along on my steep learning curve with
this Flex malarkey.

 

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Tracy Spratt
Sent: 06 September 2007 18:15
To: flexcoders@yahoogroups.com
Subject: [SPAM] RE: [flexcoders] How do I get a property from a custom
component?

 

Yes, the "evt_obj" target or currentTarget has a reference to the custom
component. Have a getter function in the component return the name.

I also advise passing in the entire item. It cleans up the code and provides
flexibility when you decide you need some other bit of item data in the
component or in the handler.

See below.

Tracy

Goal: Display a list of items using a complex display for each item, and
have each of those items behave like a menu element and respond to a click
anywhere on the item by running a handler function.

One solution is to use a Repeater with a custom component

In the main app or component, declare the Repeater, and the click handler
function.
<mx:Application ...
<mx:Script><![CDATA[
import MyRepeaterItem;
...

private function onRPItemClick(oEvent:Event):void
{
var xmlItem:XML = XML(oEvent.target);

}//onRPItemClick
]]></mx:Script>
<mx:VBox ...>
<mx:Repeater id="rp" dataProvider="{_xmlData}" ...>
<!-- Note we pass in the entire currentItem, and define a click handler -->
<MyRepeaterItem xmlItem="{rp.currentItem}" itemClick="onRPItemClick(event)"
.../>
</mx:Repeater
</mx:VBox>
</mx:Application>

And in the component, MyRepeaterItem.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox mouseChildren="false" buttonMode="true" click="onClick(event)" > 
<!-- The metadata tag below allows us to define an itemClick handler in
mxml, as in the code above -->
<mx:Metadata>
[Event(name="itemClick", type="flash.events.Event")]
</mx:Metadata>
<mx:Script><![CDATA[
[Bindable]private var _xmlItem:XML;

/** Setter function */
public function set xmlItem(xml:XML):void 
{
_xmlItem = xml;
//do any special, non-bound ui stuff you want
}//set xmlItem

/** Getter function */ 
public function get xmlItem():XML 
{
return _xmlItem;
}//get xmlItem

/** Outer VBox Click handler function */ 
private function onClick():void 
{
dispatchEvent(new Event("itemClick",false); //we do not need/want this event
to bubble
}//onClick

]]></mx:Script>
<!-- Now declare the Item UI -->
<mx:Text id="lbDescription" text="[EMAIL PROTECTED]" width="100%"
height="100%" />
</mx:HBox>

________________________________________
From: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com>
[mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> ]
On Behalf Of Paul Steven
Sent: Thursday, September 06, 2007 2:36 AM
To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> 
Subject: [flexcoders] How do I get a property from a custom component?

I have a repeated custom component as follows:
 
<mx:Repeater id="productsRepeater" dataProvider="{this.category1}" >
 

                <local:ComFolderItem mouseOver="CFSMouseOver_Folder(event)"
click="CFSClick_Folder(event)"
studentName='{productsRepeater.currentItem.productName + "(" +
productsRepeater.currentItem.productPrice + ")"}'  >
 

                </local:ComFolderItem>
 

</mx:Repeater>              
 
And I want to retrieve the studentName and productPrice when this component
is clicked on    
 
private function CFSClick_Folder(evt_obj:Object):void {
 

    var studentName:String = ??????                         
 
}
 
Please can anyone tell me how I can get this value?
 
Thanks
 
Paul
                                                



 

Reply via email to