利用flex自定义事件进行数据传递

有时候我们需要让两个组件之间实现联动,并且在其中传递数据,自定义事件机制可以帮助我们比较优雅的实现这种需要.


下面的例子,是打算实现一个列表和一个编辑框的联动.

编辑框代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*" creationComplete="init()">

<mx:Script>
<![CDATA[
import my.DummySelectEvent;
import mx.controls.Alert;
private function init():void
{
DummySelectEvent.dispatcher.addEventListener(DummySelectEvent.SELECTED_DATA_CHANGE,dataChangeListener);
}

private function dataChangeListener(event:DummySelectEvent):void
{
var data = event.data;
//Alert.show(event.data.name);
detailPanel.changeMode(Detail.EDIT_SIMPLE,data);
}
]]>
</mx:Script>

<mx:HBox x="104" y="126" width="1000">
<ns1:List>
</ns1:List>
<ns1:Detail id="detailPanel" x="104" y="135" widthInit="0" widthAdvanced="600">
</ns1:Detail>
</mx:HBox>

</mx:Application>

列表代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%" height="300" xmlns:my="my.*" creationComplete="initList()" xmlns:local="*">
<mx:Script>
<![CDATA[
import my.DummySelectEvent;
import mx.events.FlexEvent;
import my.Dummy;
import mx.collections.ArrayCollection;
import mx.controls.Alert;

private var dummyList:ArrayCollection;

private var itemSelected:Boolean = false;

private function initList():void{
dummyList = new ArrayCollection();
for( var i:Number = 0;i<10;i++)
{
var dummy:Dummy = new Dummy();
dummy.name = "name"+i;
dummy.email = "email"+i;
dummy.mobile = "mobile" +i;
dummy.address = "address"+i;
dummy.qq = "qq"+i;
dummy.msn = "msn"+i;

dummyList.addItem(dummy);

}
dataGrid.dataProvider = dummyList;
}

private function itemSelect():void
{
var dataChangeEvent:DummySelectEvent = new DummySelectEvent(dataGrid.selectedItem,DummySelectEvent.SELECTED_DATA_CHANGE);
DummySelectEvent.dispatcher.dispatchEvent(dataChangeEvent);
}

private function deleteItem():void{
Alert.show("确定要删除?");
}

]]>
</mx:Script>
<!--<mx:Label id="selectedItem" visible="false" data = "{dataGrid.selectedItem}" dataChange="itemSelect()"/>-->
<mx:Spacer height="2">
</mx:Spacer>
<local:ListBar>
</local:ListBar>
<mx:DataGrid id="dataGrid"
x="0" y="0" width="100%" height="100%"
data="{dataGrid.selectedItem}"
dataChange="itemSelect()" >
<mx:columns>
<mx:DataGridColumn headerText="name" dataField="name"/>
<mx:DataGridColumn headerText="email" dataField="email"/>
<mx:DataGridColumn headerText="mobile" dataField="mobile"/>
</mx:columns>
</mx:DataGrid>
<mx:HBox width="100%">
<mx:Button label="删除选中" enabled="{itemSelected}" click="deleteItem()"/>
</mx:HBox>

</mx:Panel>

DummyVO代码

package my
{
[Bindable]
public class Dummy
{
public function Dummy()
{

}

public var name:String;
public var mobile:String;
public var email:String;

public var qq:String;
public var msn:String;
public var address:String;

}
}

自定义事件代码

package my
{
import flash.events.Event;
import flash.events.EventDispatcher;

public class DummySelectEvent extends Event
{
public var data:Object;
public static var SELECTED_DATA_CHANGE:String = "selectedDataChange";
public static const dispatcher:EventDispatcher=new EventDispatcher();
public function DummySelectEvent(data:Object,type:String)
{
super(type,true,false);
this.data = data;
}

override public function clone():Event
{
return new DummySelectEvent(data,type);
}
}
}

主程序代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*" creationComplete="init()">

<mx:Script>
<![CDATA[
import my.DummySelectEvent;
import mx.controls.Alert;
private function init():void
{
DummySelectEvent.dispatcher.addEventListener(DummySelectEvent.SELECTED_DATA_CHANGE,dataChangeListener);
}

private function dataChangeListener(event:DummySelectEvent):void
{
var data = event.data;
//Alert.show(event.data.name);
detailPanel.changeMode(Detail.EDIT_SIMPLE,data);
}
]]>
</mx:Script>

<mx:HBox x="104" y="126" width="1000">
<ns1:List>
</ns1:List>
<ns1:Detail id="detailPanel" x="104" y="135" widthInit="0" widthAdvanced="600">
</ns1:Detail>
</mx:HBox>

</mx:Application>

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
weixin102旅游社交微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值