一 前言

讲完公共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刷新的更多相关文章

  1. wex5 实战 框架拓展之1 公共data组件(Data)

    一 前言 wex5作为开发利器,框架本身的集成能力与拓展能力可谓简单强大.在学习过程中,对框架的拓展能力,需要通过实践来丰富.今天,我以实际工作中的实例,先来看一看,框架上的公共data组件的实现与用 ...

  2. wex5 实战 登陆帐号更换与用户id一致性

    一 前言 关于用户登陆,注册,页面跳转,我讲了很多,都是页面框架级别的.有人问到这个问题,索性总结一下,今天是收尾最后一篇. 以往初学时的设计是: 1 注册 2 登陆 3 进入页面. 这种很简单,没有 ...

  3. 项目记录22-- tolua基于lua框架事件派发

     每天晚上抽点时间写一点点就一点点,曾经不写博客可是如今.不为别的仅仅是为了告诉别人我还存在.         这几天在地铁上发现好多人都还在玩消除游戏,今天起码看到5个人,可是玩的版本号都不一样.看 ...

  4. 实战框架ABP

    abp及实战框架概述 接触abp也快一年了,有过大半年的abp项目开发经验,目前项目中所用的abp框架版本为0.10.3,最新的abp框架已经到了1.4,并且支持了asp.net core.关于abp ...

  5. Unity-自定义事件派发器的两次尝试

    一.前言: 在游戏开发的很多时候,需要引用其他类的方法,但是一旦类多起来了,相互引用会导致引用关系混乱,极其难以阅读. 以前初次做抖音小游戏时,和一位经验老道的cocos程序员合作,看到我写的代码他不 ...

  6. Java多线程开发系列之番外篇:事件派发线程---EventDispatchThread

    事件派发线程是java Swing开发中重要的知识点,在安卓app开发中,也是非常重要的一点.今天我们在多线程开发中,穿插进来这个线程.分别从线程的来由.原理和使用方法三个方面来学习事件派发线程. 一 ...

  7. wex5 实战 省市县三级联动与地址薄同步

    无论是商城,还是快递,都要用到省市县三级联动,和地址薄,今天就以实战来制作,难点有3个: 1:三级联动,有wex5组件实现,相对简单,实战里对行数据进行了拼接 2:  地址薄选项,利用inputSel ...

  8. 使用lua实现一个简单的事件派发器

    设计一个简单的事件派发器,个人觉得最重要的一点就是如何保证事件派发过程中,添加或删除同类事件,不影响事件迭代顺序和结果,只要解决这一点,其它都好办. 为了使用pairs遍历函数,重写了pairs(lu ...

  9. HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)(转)

    HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...

随机推荐

  1. Codeforces Round #383 (Div. 2) D 分组背包

    给出一群女孩的重量和颜值 和她们的朋友关系 现在有一个舞台 ab是朋友 bc是朋友 ac就是朋友 给出最大承重 可以邀请这些女孩来玩 对于每一个朋友团体 全邀请or邀请一个or不邀请 问能邀请的女孩的 ...

  2. alfresco category searches...

    From page 475 of the Alfresco Developer Guide- Category searches use the PATH field, but you constru ...

  3. .添加索引和类型,同时设定edgengram分词和charsplit分词

    1.添加索引和类型,同时设定edgengram分词和charsplit分词 curl -XPUT 'http://127.0.0.1:9200/userindex/' -d '{   "se ...

  4. Xcode清除缓存等

    Xcode出现一些错误的时候,有时候不是代码的问题,需要清理一下Xcode的缓存或者项目的Product等: 1. Product清理 1.1  Product-Clean 1.2  Product- ...

  5. ES6 基础知识

    let:用来定义变量特点:只能在代码块里面使用,let拥有块级作用域;并且let不允许重复声明; 比如: var a = 12; var a = 5; alert(a); //5; let a = 1 ...

  6. 1.Linux是什么?

    UNIX设计理念: 所有的程序或系统装置都是文件. 不管构建编辑器还是附属文件,所写的程序只有一个目的,就是有效地完成目标 操作系统:应用程序->系统调用->内核->硬件.其中系统调 ...

  7. Another MySQL daemon already running with the same unix socket的解决

    问题出现: 每周一需要备份一次数据库,即从服务器MySQL导出sql文件,再导入到我机器上虚拟机的MySQL里.但是今天早上连不上,我进入控制台用#service mysqld start强行启动,报 ...

  8. VS工程添加资源文件

    1. 添加资源文件: 2. 资源文件内写相应代码: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006 ...

  9. Python之路-python(css、JavaScript)

    css JavaScript 一.CSS 分层: position: fixed;(固定到页面的具体位置) 例如:返回顶部 <!DOCTYPE html> <html lang=&q ...

  10. 主页面、iframe之间调用以及传值

    主页面.iframe之间的调用和传值,无非就是两个交互形式: 主页面与子页面的交互 子页面之间的交互 接下来要讲的是四种交互传值的方式:利用postMessage方法传值.DOM操作传值.URL方式传 ...