【问题标题】:get component variables values into main application将组件变量值获取到主应用程序中
【发布时间】:2012-04-10 20:54:50
【问题描述】:

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

<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);
            }

【问题讨论】:

    标签: apache-flex components flash-builder flex4.5


    【解决方案1】:

    如果我理解正确,那么我会在 idname 发生变化时调度一个事件,并在主应用程序中捕获它。例如。您可以使用变量 id 和名称创建一个 CustomEvent 类 YouDataEvent.as。我经常将它与我自己的对象一起使用,然后将对象与事件一起发送。让我们调用包含 id 和名称的对象 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
    }
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2018-06-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多