получить значения переменных компонента в основное приложение - PullRequest
0 голосов
/ 27 марта 2012

У меня есть компонент, который получает данные, выбранные переключателем

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

здесь есть 2 переменные data_id и data_name, и я хочу использовать переменные этого компонента в основном приложении, которые вызываются при нажатии кнопки, так что делать, как я вызываю значения переменных в эту функцию, я попробовал это

protected function delete_clickHandler(event:MouseEvent):void
            {
                // TODO Auto-generated method stub
                dispatchEvent( new Event( Event.CHANGE ) );

                deleteTaxonomy(data.id, data.name);
            }

1 Ответ

0 голосов
/ 27 марта 2012

Если я вас правильно понимаю, то я отправлю событие, когда изменятся id и имя , и перехватит его в основном приложении. Например. Вы можете создать класс CustomEvent YouDataEvent.as с переменными id и name. Я часто использую это со своими объектами, а затем отправляю объект вместе с событием. Позволяет вызвать ваш объект, содержащий идентификатор и имя YourObject

import flash.events.Event;

public class YourObjectEvent extends Event
{
         public static const YOURDATA_UPDATED:String = "yourdataUpdated";
         public var yourObj:YourObject

         public function YourObjectEvent(type:String, yourObjInput:YourObject, bubbles:Boolean = true, cancelable:Boolean = false)
         {
            this.yourObj = yourObjInput;
            super(type, bubbles, cancelable);
         }

}

Затем вы можете отправить событие при изменении данных, например, в методе * item_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
}

Надеюсь, это поможет!

...