案例学习BlazeDS+Spring之八InSync06“松耦合”UI同步事件通知
InSync06:增加“松耦合”UI同步事件通知
一、运行DEMO:
1、运行程序:http://localhost:8400/spring-flex-testdrive/insync04/index.html;
2、单击Search按钮,从数据库获取所有的联系人。
3、在Search文本框输入几个字符,单击“Search”按钮,按名字来查找联系人。
4、双击DataGrid里的某个联系人,打开独立的Tab。
5、修改联系人的first name或last name,单击“Save”。注意到DataGrid会自动更新。
6、加入一个新的联系人,单击“Save”创建一个新联系人。注意到这个新联系人将会显示在DataGrid中。
7、删除一个联系人,注意到这个联系人为从DataGrid中被移除。
二、理解代码:
1、insync06.mxml:
在每新建一ContactForm Tab时,即添加监听:
var form:ContactForm = new ContactForm();
form.addEventListener(ContactEvent.CREATED, contactCreatedHandler);
form.addEventListener(ContactEvent.UPDATED, contactUpdatedHandler);
form.addEventListener(ContactEvent.DELETED, contactDeletedHandler);
tn.addChild(form);
form.contact = contact;
tn.selectedChild = form;
这三个事件处理都调用search()方法,重新刷新程序。
private function contactCreatedHandler(event:ContactEvent):void
{
search();
}
search()即:ro.findByName(searchStr.text);
2、ContactForm.mxml
ContactForm使用<fx:Metadata>定义了三个事件,
<fx:Metadata>
[Event(name="contactCreated", type="ContactEvent")]
[Event(name="contactUpdated", type="ContactEvent")]
[Event(name="contactDeleted", type="ContactEvent")]
</fx:Metadata>
当创建、更新和删除返回时,即派发这些事件。如:
dispatchEvent(new ContactEvent(ContactEvent.CREATED, contact));
dispatchEvent(new ContactEvent(ContactEvent.UPDATED, contact));
dispatchEvent(new ContactEvent(ContactEvent.DELETED, contact));
注:
<fx:Metadata>:
使用 <fx:Metadata> 标签可以在 MXML 文件中插入 metadata 标签。Metadata 标签为 Flex 编译器提供了描述在 Flex 应用程序中如何使用 MXML 组件的信息。Metadata 标签不会被编译为可执行代码,但提供了用于控制如何编译相应的代码部分的信息。
[Event(name="mxml控件事件的名称", type="事件的类型")]
dispatchEvent是ContactForm从父类中继承下来派发事件的方法。
3、ContactEvent.as:
自定义的事件类型,从Event下继承。
package
{
import flash.events.Event;
public class ContactEvent extends Event
{
public static const CREATED:String = "contactCreated";
public static const UPDATED:String = "contactUpdated";
public static const DELETED:String = "contactDeleted";
public var contact:Contact;
public function ContactEvent(type:String, contact:Contact, bubbles:Boolean = true, cancelable:Boolean = false)
{
this.contact = contact;
super(type, bubbles, cancelable);
}
}
}
三、小结:
本DEMO与之前的DEMO不同的之处,在于使用事件同步更新UI中的控件。当联系人被创建、更新或者删除时,ContactForm派发事件。程序中的其它组件作为监听者注册这些事件,当联系人被创建、更新或删除时,按指定的任务处理。在这种情况下,主程序作为监听者注册这些事件,刷新联系人的DataGrid反映在ContactForm里做的改变。
来自:http://blog.sina.com.cn/s/blog_67532f7c0100ot2p.html
案例学习BlazeDS+Spring之八InSync06“松耦合”UI同步事件通知相关推荐
- 案例学习BlazeDS+Spring之一(
BlazeDS4的一个亮点就是与Spring的集成,这大大简化了与FLASH与JEE的集成开发.通过理解BlazeDS4附带的那些精湛的小DEMO,可以很快速的掌握这门技术.虽然案例学习这种方式不太利 ...
- 案例学习BlazeDS+Spring之二Spring BlazeDS Integration 101
Spring BlazeDS Integration 101 这展示BlazeDS+Spring最基本的DEMO. 一.运行DEMO: 1.运行应用程序,URL:http://localhost:84 ...
- 案例学习BlazeDS+Spring之十一:Simple Data Push
Simple Data Push 这个简单的数据推送服务demo演示了如何使用消息服务,将数据从服务端推送到客户端.在服务端,一个JAVA组件发布一个模拟真实的值给订阅了此消息目标的FLEX客户端.这 ...
- 案例学习BlazeDS+Spring之三InSync01查找联系人
InSync01:查找联系人 一.运行DEMO: 1.运行程序:http://localhost:8400/spring-flex-testdrive/insync01/index.html: 2.单 ...
- 案例学习BlazeDS+Spring之五InSync03强类型
InSync03:强类型 一.运行DEMO: 1.运行程序:http://localhost:8400/spring-flex-testdrive/insync03/index.html: 2.单击S ...
- 案例学习BlazeDS+Spring之九Company Manager
Company Manager 该DEMO与InSync是类似的,提供公司信息的CRUD操作.但CompanyManager使用注释来进行定义.也展示了对象关联(CompanyDAO类与Industr ...
- 案例学习BlazeDS+Spring之十:Chat(
Chat: 该DEMO展示的是BlazeDS的消息服务,是一个使用发布/订阅者模式的简单聊天室. 一.运行DEMO: 1.运行程序:http://localhost:8400/spring-flex- ...
- 案例学习BlazeDS+Spring之十二:Traderdesktop
Traderdesktop: 这是一个更为复杂的数据推送demo,它演示了如何使用主题来有选择的订阅指定消息.在这种情况下,用户可以仅订阅指定的股票更新消息.在服务端,Java组件发送模拟的市场数据到 ...
- 案例学习BlazeDS+Spring之四InSync02使用RemoteObject事件
InSync02:使用RemoteObject事件 一.运行DEMO: 1.运行程序:http://localhost:8400/spring-flex-testdrive/insync02/inde ...
最新文章
- UVA11437 Triangle Fun(相似三角形,做辅助线求解相似比例)
- 重磅!谷歌刚刚发布Objectron新数据集,可完美检测3D目标,超过4百万幅图像和15K视频剪辑!...
- mysql floor报错_mysql的floor()报错注入方法详细分析
- python udp创建addr_python高级:8.socket通信part1
- ubuntu server 10.04 LTS(64位)装不了花生壳的解决方法
- 搜索引擎利用机器学习排序
- Angular的@Output与@Input理解
- 信息学奥赛一本通 2028:【例4.14】百钱买百鸡
- jdbc mysql wait_timeout_MySql wait_timeout问题解决办法。
- 【ACL2020】基于语境的文本分类弱监督学习
- php 获取扩展函数,获取php扩展函数
- 那些我们想当然的错误[SQL]
- 谷歌chrome浏览器 - 关于插件,这一篇就够了
- 翻译之:数据页面和数据行
- BZOJ 4816[SDOI2017]数字表格(莫比乌斯反演)
- python Pygame库介绍和使用,基本游戏开发
- CUDA + cuDNN + tensorflow-gpu 安装
- 人生感悟人生是一场修行
- ios 通讯录 通过电话号码 查询姓名
- QPainter 保存自绘制为图片
热门文章
- sql还原数据库备份数据库_如何获取SQL数据库还原历史记录
- mvc中嵌入ssrs报表_如何在SSRS报表中过滤多维OLAP多维数据集
- SQL Server FILESTREAM数据库损坏和修复
- 洛谷 P3396 哈希冲突 解题报告
- 通过Mybatis获取mysql表中重复记录的方法
- 关于自动装箱和自动拆箱
- oracle经典面试题以及解答
- 抢购 mysql 优化_处理抢购、秒杀应用场景降低“超卖”发生几个优化方案(php)...
- 浅谈Spring中JDK动态代理与CGLIB动态代理
- OpenCV 离散傅里叶变换