wex5 实战 框架拓展之2 事件派发与data刷新
一 前言
讲完公共data,相信大家对框架级的data组件级绑定有了更新的认识,接下来我们继续深入,以求研究明白wex5的框架能力。
在一个web项目中,其实有一个data, 是基础框架必须的data,并且要实时监控数据变更。那就是用户userData.
此文的目地和意义:
1 在涉及到用户登陆的项目中,框架级的userData,可以为所有web页面提供数据来源,用超现实的方法保证多页面中的用户唯一性,且一次加载即可。不必像之前的分页data每次都要用户ID来过滤用户数据。
2 抛弃之前的页面接收事件modelParamsReceive机制,用派发事件,让页面中的监听器根据事件来执 行刷新或其它事件,解决用户userData更新后项目中N个页面的更新问题。之前用页面跳转传参,触发接收事件的方法刷新data,当跳转页面来源超过3个时,需要进行来源判断并准确传参,相对于N个页面甚至上百个页面的大型工程,显然,之前的页面接参触发方法已无法满足设计需求。
所以,今天,我的设计方案是,将用户userData,像上期讲解的商品goodsData一样,挂到框架上,让所有页面绑定用户数据,当用户重新登陆或信息修改后派发事件,让所有与用户操作相关的页面监听并接收事件及参数,及时刷新数据。
二 效果演示
为便于连贯理解,我仍然用上次的项目
1 登陆前
2 登陆后 头像更换,首页登陆按钮隐藏
3 用户更换帐号
三 页面逻辑与代码实现
1 派发事件
用户登陆,修改登陆相关字段状态到数据库,保存成功后,派发事件,并将当前用户userUUID传参
2 框架接收
框架接收的前提是,把userData放到框架上,也就是index门户页面上,在index页监听事件并接参
index页加载完成后,装载事件
index页退出时卸载事件,避免页面退出,事件仍在监听报错
事件函数的方法
框架页面接收事件并接收参数,这里是userUUID,执行数据过滤,得到当前用户信息。
3 页面数据绑定
登陆按钮隐藏
头像绑定:用三目表达式,空值显示默认头像,有值显示真实用户头像
帐号更新
四 总结
派发事件,没有页面针对性,类似于广播,触发之后把事件派发出去,在需要接收事件的页面创建事件监听器,负责接收事件,当有事件派发时接收事件,接参,并执行相应的data刷新等动作。相比于modelParamsReceive的依赖于页面的传参接参,具有更广阔的应用范围和控制能力以及扩展方法。
将思路延伸一下,不同页面中的订单数据同步,购物车数据同步,支付页面数据同步,等等,如果用派发事件的方法,页面会更简结,易于维护和修改。
wex5 实战 框架拓展之2 事件派发与data刷新的更多相关文章
- wex5 实战 框架拓展之1 公共data组件(Data)
一 前言 wex5作为开发利器,框架本身的集成能力与拓展能力可谓简单强大.在学习过程中,对框架的拓展能力,需要通过实践来丰富.今天,我以实际工作中的实例,先来看一看,框架上的公共data组件的实现与用 ...
- wex5 实战 登陆帐号更换与用户id一致性
一 前言 关于用户登陆,注册,页面跳转,我讲了很多,都是页面框架级别的.有人问到这个问题,索性总结一下,今天是收尾最后一篇. 以往初学时的设计是: 1 注册 2 登陆 3 进入页面. 这种很简单,没有 ...
- 项目记录22-- tolua基于lua框架事件派发
每天晚上抽点时间写一点点就一点点,曾经不写博客可是如今.不为别的仅仅是为了告诉别人我还存在. 这几天在地铁上发现好多人都还在玩消除游戏,今天起码看到5个人,可是玩的版本号都不一样.看 ...
- 实战框架ABP
abp及实战框架概述 接触abp也快一年了,有过大半年的abp项目开发经验,目前项目中所用的abp框架版本为0.10.3,最新的abp框架已经到了1.4,并且支持了asp.net core.关于abp ...
- Unity-自定义事件派发器的两次尝试
一.前言: 在游戏开发的很多时候,需要引用其他类的方法,但是一旦类多起来了,相互引用会导致引用关系混乱,极其难以阅读. 以前初次做抖音小游戏时,和一位经验老道的cocos程序员合作,看到我写的代码他不 ...
- Java多线程开发系列之番外篇:事件派发线程---EventDispatchThread
事件派发线程是java Swing开发中重要的知识点,在安卓app开发中,也是非常重要的一点.今天我们在多线程开发中,穿插进来这个线程.分别从线程的来由.原理和使用方法三个方面来学习事件派发线程. 一 ...
- wex5 实战 省市县三级联动与地址薄同步
无论是商城,还是快递,都要用到省市县三级联动,和地址薄,今天就以实战来制作,难点有3个: 1:三级联动,有wex5组件实现,相对简单,实战里对行数据进行了拼接 2: 地址薄选项,利用inputSel ...
- 使用lua实现一个简单的事件派发器
设计一个简单的事件派发器,个人觉得最重要的一点就是如何保证事件派发过程中,添加或删除同类事件,不影响事件迭代顺序和结果,只要解决这一点,其它都好办. 为了使用pairs遍历函数,重写了pairs(lu ...
- HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)(转)
HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...
随机推荐
- TotalCommander 之 快捷键
显示编辑文件: F3:专门用来查看文件,这个恐怕是使用程度最高的快捷键了.当然并不是所有的文件都能打开,如需要查看更多类型的文件,还需要安装插件.或者直接双击用系统自带的软件查看也可.Ctrl + Q ...
- Unity Aspect
Unity封装的东西太多,所以在很多情况下回忽略这些基本的事情.游戏窗口的中Aspect是通过Game窗口中进行选择,但对于相机的Aspect Unity并没有暴露接口在设置界面中,至少在编辑器下进行 ...
- 浅谈iOS开发中方法延迟执行的几种方式
Method1. performSelector方法 Method2. NSTimer定时器 Method3. NSThread线程的sleep Method4. GCD 公用延迟执行方法 - (vo ...
- JPA 2.1 Coverter 注解
@Converter(autoApply = true) public class VehicleConverter implements AttributeConverter<Vehicle, ...
- chrome中hack解决input:-webkit-autofill自定义样式
在使用chrome浏览器设计网页时,想将input背景改成透明,也就是 background-color:transparent; 可是效果并不如人意 hack方法: input:-webkit-au ...
- CSS中定位和浮动对行内元素的宽高的影响
行内元素的大小是由元素里面的内容撑开的宽高决定的,就算在css中对行内元素设置width,height.行内元素也会忽略宽高的设置. 但是当行内元素使用position:absolute或者posit ...
- [原]关于flash GPU渲染的一些不完全测试(wmode,ie,chrome)
关于flash GPU渲染的一些不完全测试(wmode,ie,chrome) 测试环境: 随意取一段优酷超清视频,在本地以网页最大化方式播放,分辨率约1080P左右. 观察不同wmode值下,flas ...
- 转:linux下jar命令与jar包
原文链接:http://blog.chinaunix.net/uid-692788-id-2681136.htmlJAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包.当然也是有 ...
- magento 安装
magento 安装其实很简单. 第一步,打开,你下载好的程序,找到php.ini.simple,根据这里面的的要求,来修改,你本地或服务器 php.ini的配置. 第二步,开始安装了(注意,先在你的 ...
- One of the best logo fonts "Klavika"
Download link: http://fontsgeek.com/search?q=Klavika