- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ZK6入门ZK-MVVMZK6入门ZK-MVVM
ZK MVVM模式简介
ZK6.0之前的版本都是采用MVP(Model-View-Presenter)设计模式。从ZK6.0开始就有了很大的不同,采用MVVM(Model-View-ViewModel)设计模式。
下面通过一个例子来看一下它们之前的不同:
用例:实现页面上点击一个按钮,然后呈现Model层返回的消息”Hello World”
MVP实现:
作用过程:
①用户在屏幕上点击按钮(一个动作action),一个通信事件就被触发。
②后台的事件监听器(event listener)处理这个事件(event)。
③访问数据库(access data)并返回
④用户界面元素(UI element)被改变,相应的把视觉反馈(visual feedback)呈现给用户
MVVM实现:
作用过程:
①用户在屏幕上点击按钮(action)触发一个事件(event)
②绑定器(Binder)感知到相应的事件(corresponding event)被触发
③绑定器(Binder)在ViewModel中找到相应的动作逻辑(action logic)并调用它
④动作逻辑(action logic)从Model层访问数据库(access data),并更新ViewModel中相应的属性
⑤ViewModel通知(notify chnage)绑定器(Binder) 一些属性被改变
⑥每当有属性被改变,绑定器(Binder)就会从ViewModel中加载数据(load data)
⑦绑定器(Binder)改变相应的UI组件来给用户呈现视觉反馈(visual feedback)
很明显,UI设计者必须至少告诉绑定器(Binder)以下几点:
用到了哪些UI事件(UI event)来触发哪些动作逻辑(action logic)。(这样Binder才知道调用什么方法)
用到了哪些UI属性(UI attribute)来显示哪些数据。(这样Binder才知道加载什么数据,更新什么数据)
用到的哪些UI属性(UI attribute)是用来输入到数据库的。(这样Binder才知道要保存哪些属性)
在ZK绑定(ZK Bind)中用到了ZK注解(annotation)来做这些工作:
通过程序流程运行的过程:
①当用户按下了”Show”按钮,onClick event就被触发到了Binder
②ZK Binder通过指定的ZK 注解 @command(showHello)在ViewModel中找到命令的名字(command name)为showHello的方法。
③Binder在HelloViewModel.java中调用showHello()方法,并且改变message的属性值为”Hello World”。
注意:@command(showHello)是告诉Binder showHello这个方法是一个command方法,而@NotifyChange(message)则是告诉Binder 如果@command(showHello)中的showHello()方法被调用,那么HelloViewModel中的属性message将会被改变。也就是说当这个方法被调用后,页面上(客户端)可以感知到属性message的改变。
④Binder找到HelloViewModel.java中与组件标签(component label)相关联的属性message的属性值(这是由于页面上message被指定了ZK注解@load(vm.message)的缘故)。因此它通过调用HelloWorldModel.java的message属性的getMessage()方法从vm.message中加载数据,并改变标签label的属性值。最后”Hello World!”就呈现到了客户端用户。
有时用户看了上面的页面之后,说想通过弹出窗(pop window)来显示信息message。这样的改变其实很容易,将信息放到一个模态窗口中:
MVP实现:
对于MVP设计模式而言,view层的zul页面修改了之后,Presenter层的java文件必须完全被重写,这时需要注入弹出窗口popwin、弹出窗口中的标签popwin$lbl
MVVM实现:
当客户改变View层的需求的时候,MVVM设计模式的优势就体现出来了。UI设计者可以独立的处理这些改变,而不用去改变HelloViewModel.java文件,因为客户需要的是改变message的呈现方式而不是message本身。
注意:模态窗口的显示或隐藏是通过判断message的值是否为空来控制的。(visible=@load(not empty vm.message))
ZK Binding Features(ZK绑定特征):
说明:@save只会将它绑定的标
您可能关注的文档
- WEB开发班—HTML重难点复习预习WEB开发班—HTML重难点复习预习.pdf
- web技术_JSF框架web技术_JSF框架.ppt
- WEB打印的几种方案WEB打印的几种方案.pdf
- Web技术简介Web技术简介.ppt
- Web校园二手交易系统的设计与实现Web校园二手交易系统的设计与实现.pdf
- wedding 婚礼英语简介wedding 婚礼英语简介.ppt
- Web of Science被引参考文献检索(内容丰富!)Web of Science被引参考文献检索(内容丰富!).ppt
- WELKIN靶式流量计WELKIN靶式流量计.doc
- westernblot精华pptwesternblot精华ppt.ppt
- What is your favourite season 教学设计What is your favourite season 教学设计.doc
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)