Flex中利用事件机制进行主程序与子窗体间参数传递
在开发具有子窗体,或者itemrenderer的应用时,常常涉及到子窗体向父窗体传递参数或者从itemrenderer内的控件向外部的主程序传递参数的需求。这些都可以通过事件机制这一统一方法加以解决。
在我的应用中有两个需求:
1、左侧的List控件的itemrenderer中包含CheckBox控件,当其状态改变时需要同时改变主程序中的一个数组变量的内容;
2、左下方的“新增届次”按钮会弹出一个窗口,窗口中输入届次信息后需要修改数据库中的表,同时表的更改结果要能够在List控件中体现出来。
这两个需求我都通过事件机制来解决,具体方法如下:
第一个需求:
1、首先新建一个事件类:
import flash.events.Event;
public class ListItemChangeEvent extends Event{
public var Jieci:Object;//用来传递参数的类属性
public function ListItemChangeEvent(type:String, Jieci:Object=null,
bubbles:Boolean=false, cancelable:Boolean=false) {
this.Jieci=Jieci;
super(type, bubbles, cancelable);
}
}
}
2、List控件的代码如下:
<mx:List id="JieciList" bottom="42" top="38" left="10" right="0" dataProvider="{JieciListAC}" labelFunction="ListLabelFunction">
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox change="onChange(event)">
<mx:Script>
<![CDATA[
import com.RenDa.event.ListItemChangeEvent;
private function onChange(evt:Event):void {
var JieciObj:Object=new Object
JieciObj.jie=data.Jie
JieciObj.ci=data.Ci
//触发自定义事件,因为事件处理程序在主窗体中,所以evt的第三个参数即bubbles设置为TRUE,表示冒泡到主程序层
var evtChange:ListItemChangeEvent=new ListItemChangeEvent("List_Item_Changed",JieciObj,true);
this.dispatchEvent(evtChange);
}
]]>
</mx:Script>
</mx:CheckBox>
</mx:Component>
</mx:itemRenderer>
</mx:List>
3、主程序的初始化函数中定义时间侦听器:
JieciList.addEventListener("List_Item_Changed",ListItemChangeHandler);
}
4、主程序中定义事件处理函数:
//需要执行的代码放在这里
}
对于第二个需求,也是同样的原理,只不过主程序中侦听器的定义不是在程序初始化时,而是弹出窗口建立时,在子窗口关闭时触发事件,在主程序中侦听事件并作相应操作:
1、定义事件类:
package com.RenDa.event{
import flash.events.Event;
//子窗体关闭事件
public class WindowCloseEvent extends Event{
public function WindowCloseEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){
super(type, bubbles, cancelable);
}
}
}
2、子窗体中在关闭子窗体之前触发事件:
this.dispatchEvent(evtClose);
PopUpManager.removePopUp(this)//关闭子窗体
3、主程序中定义事件侦听器:
private function NewJieciBtnClickHandler(evt:MouseEvent):void{//弹出子窗按钮
var popNewJieci: NewJieciWin=NewJieciWin(PopUpManager.createPopUp(this,NewJieciWin,true));
//弹出对话框居中
PopUpManager.centerPopUp(popNewJieci);
//定义事件侦听器
popNewJieci.addEventListener("Sub_Window_Closed",NewJieciWinCloseHandler);
}
4、主程序中的事件处理函数:
private function NewJieciWinCloseHandler(evt:WindowCloseEvent):void{
//需要执行的代码放在这里
}
转载自: http://blog.sina.com.cn/s/blog_4d65c19e0100gwuv.html
Flex中利用事件机制进行主程序与子窗体间参数传递的更多相关文章
- Spring 中的事件机制
说到事件机制,可能脑海中最先浮现的就是日常使用的各种 listener,listener去监听事件源,如果被监听的事件有变化就会通知listener,从而针对变化做相应的动作.这些listener是怎 ...
- jQuery中的事件机制深入浅出
昨天呢,我们大家一起分享了jQuery中的样式选择器,那么今天我们就来看一下jQuery中的事件机制,其实,jQuery中的事件机制与JavaScript中的事件机制区别是不大的,只是,JavaScr ...
- Tomcat与Spring中的事件机制详解
最近在看tomcat源码,源码中出现了大量事件消息,可以说整个tomcat的启动流程都可以通过事件派发机制串起来,研究透了tomcat的各种事件消息,基本上对tomcat的启动流程也就有了一个整体的认 ...
- C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西付给另一个类对象,而不是付给引用地址)
from:https://blog.csdn.net/poxiaohai2011/article/details/27555951 //C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西 ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- nodeJS中的事件机制
events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http.fs等.本文将详细介绍nodeJS中的事件机制 EventEmitter 多数 Node.js ...
- flex中Button事件中的e.target
关于flex中的Button事件中的e.target. 今天想在事件中调用模块中的对象通过e.target获取单击的这个Button对象,但是可能是使用var btn:Button = e.targe ...
- javascript 中的事件机制
1.javascript中的事件. 事件流 javascript中的事件是以一种流的形式存在的. 一个事件会也有多个元素同时响应. 有时候这不是我们想要的效果, 我们只是需要某个特定的元素相应我们的绑 ...
- libevent中的事件机制
libevent是事件驱动的网络库,事件驱动是他的核心,所以理解事件驱动对于理解整个网络库有很重要的意义. 本着从简入繁,今天分析下单线程最简单的事件触发.通过sample下的event- ...
随机推荐
- 【转载】Linux查看PCIe版本及速率【方法】PCIE的X4X8X16 查看 数量 怎么看
Linux查看PCIe版本及速率 PCIE有四种不同的规格,通过下图来了解下PCIE的其中2种规格 查看主板上的PCI插槽 # dmidecode | grep --color "P ...
- 理解RESTful架构——Restful API设计指南
理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...
- centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息
centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息 rose_willow rose_willow 发布于 2016/06/16 11:32 字数 902 阅读 405 收藏 0 点赞 0 ...
- SecureCRT自动保存日志设置
SecureCRT自动保存日志设置原创杭州_燕十三 最后发布于2017-03-26 22:00:08 阅读数 24731 收藏展开 嵌入式开发经常由于无法debug而只能使用串口打印日志的方式调试代码 ...
- Ansible_实施处理程序
一.Ansible配置处理程序 1.处理程序 1️⃣:处理程序是响应由其他任务触发的通知的任务 2️⃣:仅当任务在受管主机上更改了某些内容时,任务才通知其处理程序 3️⃣:每个处理程序具有全局唯一的名 ...
- STM32 中的CEC
http://www.cnblogs.com/qdrs/articles/7645117.html
- 矩阵中的路径 DFS+剪枝
给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母顺序,通过相邻的单元格内的字母 ...
- Docker系列——Grafana+Prometheus+Node-exporter服务器告警中心(二)
在前一篇博文中介绍,服务器监控已经部署成功.如果每天都需要人去盯着服务情况,那也不太现实.既然监控平台已经部署好了,是不是可以自动触发报警呢? 在上一篇Prometheus架构中有讲到,核心组件之一: ...
- unity项目字符串转为Vector3和Quaternion
运用环境:一般在读取csv表格的数据时是string类型转为Vector3或者Quaternion类型 字符串格式:x,x,x /x,x,x,x (英文逗号) 方法: /// <summary& ...
- Prometheus监控软件部署方法
背景:负责基于区块链的某公正项目的状态上报模块设计编码,基于Prometheus进行二次开发 1.说明Prometheus 是一个开源的服务监控软件,它通过 HTTP 协议从远程机器收集数据并存储在本 ...