Apache flex 将组件变量值获取到主应用程序中

Apache flex 将组件变量值获取到主应用程序中,apache-flex,components,flash-builder,flex4.5,Apache Flex,Components,Flash Builder,Flex4.5,我有一个组件,它获取单选按钮选择的数据 <mx:itemRenderer > <fx:Component id="radio"> <mx:RadioButton selected="false" useHandCursor="true" change="item_changeHandler(event)">

我有一个组件,它获取单选按钮选择的数据

<mx:itemRenderer >
                            <fx:Component id="radio">
                            <mx:RadioButton selected="false" useHandCursor="true" change="item_changeHandler(event)">
                                    <fx:Script>
                                    <![CDATA[
                                            private var data_id:int;
                                            private var data_name:String;
                                            protected function item_changeHandler(event:Event):void
                                            {
                                                data_id=data.id;
                                                data_name=data.name;
                                            }
                                    ]]>
                                    </fx:Script>
                            </mx:RadioButton>
                            </fx:Component>
                        </mx:itemRenderer>

如果我理解正确,那么我会在id和名称更改时发送一个事件,并在主应用程序中捕获它。例如,您可以使用变量id和名称创建CustomEvent类YouDataEvent.as。我经常将其用于我自己的对象,然后将对象与事件一起发送。让我们调用包含id和名称的对象

然后,您可以在数据更改时调度事件,例如在*item\u changeHandler*方法中,如下所示:

dispatchEvent(new YourObjectEvent(YourObjectEvent.YOURDATA_UPDATED, yourObjVar));   
并在主要应用程序中捕获,例如:

FlexGlobals.topLevelApplication.addEventListener(YourObjectEvent.YOURDATA_UPDATED, yourObjUpdatedHandler);

private function yourObjUpdatedHandler(event:YourObjectEvent): void {
  //DO something
  var id:Number = event.yourObj.id;
  var name:String = event.yourObj.name
}
希望这有帮助

dispatchEvent(new YourObjectEvent(YourObjectEvent.YOURDATA_UPDATED, yourObjVar));   
FlexGlobals.topLevelApplication.addEventListener(YourObjectEvent.YOURDATA_UPDATED, yourObjUpdatedHandler);

private function yourObjUpdatedHandler(event:YourObjectEvent): void {
  //DO something
  var id:Number = event.yourObj.id;
  var name:String = event.yourObj.name
}