ZK 支援两种 pattern 来开发:
两者各有其长处,你可以根据你的开发习惯与偏好选择,不过因为 MVVM 有许多行为发生在 ZK 框架内部,你需要花时间了解框架内部的运作才能正确使用它,学习曲线在一开始会有点陡,因此这系列文章只介绍比较简单易懂的 MVC 模式,让初学者比较好上手。
MVC 其实是个通用的软件模式词汇,泛指一般把系统分成模型(Model), 视图(View), 控制器(Controller)三部分的架构。ZK 借用这个词来指称「直接透过元件 API 来控制元件」的设计模式,这个设计模式是ZK 从 3.6 就支援的。 在 ZK 的架构下:
这种设计模式下,你必需实作一个继承一个 ZK 内建控制器类别(建议用SelectorComposer
) 的 Controller,然後在 Controller 中实做你的应用程序逻辑。实现的方法就是透过实作 event listener method 倾听元件上发出的事件(如 button
会发出 onClick
事件),再透过元件提供的 API 来控制画面,例如我要将文字内容改变,就呼叫 Label.setValue()
。
ZK 6.0 之後开始支援此开发模式,这个 pattern 也把系统分成3个角色:Model、View、 ViewModel,跟 MVC 就差别在 ViewModel,其他两个角色都相同。ViewModel 也可说是一种特别的控制器,它负责将後端 model 的部分资料透露给 View,也提供 View 所需要执行的应用逻辑,如同一个视图抽象层 (view abstration),包含 View 的状态(property)与行为 (command)。ViewModel 不会直接参考任何 UI 元件,也不该直接呼叫任何元件 API。ViewModel 将页面资料存在 property 中,并提供 getter, setter 让 ZK 存取,将页面所需行为实作在 method 中,例如搜寻、新增,我们称之为命令(command)。
你透过在 View 上撰写资料系结语法 (data binding) 来将元件状态与 ViewModel 中的资料、将事件与命令绑定在一起,ZK 透过这些资料系结表达是来帮你完成 View 与 ViewModel 之间的互动。例如 onClick 事件绑定到 add(),因此按下按钮就会呼叫 add()。
>>: 每日挑战,从Javascript面试题目了解一些你可能忽略的概念 - Day4
Unit Test 应用於使用重构与测试手法优化 C# Code-3-前言 昨天已经把 DemoCa...
在fragment里面使用元件 常常在写程序时会遇到再fragment抓不到元件的事情 用这个方式就...
除了昨天介绍的 Viewset ,有另外一个大家不太熟悉但是看似又非常强大的 class,就是 Se...
什麽是抽象类别 an abstract class, or abstract base class ...
昨天我们把一资料库建里好之後,今天我们学习怎麽把资料写进去吧~ 在MainVC里面先建立一个空阵列,...