MVVM示例

来源:互联网 发布:c语言从入门到入坟 编辑:程序博客网 时间:2024/06/03 07:57

例子:在一个页面上通过字符串条件查询出item清单,选中一个item会在页面底部显示详细信息。

1、按照MVVM的设计理念,我们应该抛开视觉效果,首先设计ViewModel。

一个ViewModel应该不依赖View层,但是要考虑到与View层交互的数据(data)和行为方法(action)。

例子中我们需要一个字符串作为检索条件,一个ListModelList<Item>来保存查询结果,一个doSearch()方法来执行查询命令(command)。此外,我们还需要一个域来保存当前选中的item。我们可以看出,ViewModel是独立于View层的,这就意味着其他View也可以重复使用这个ViewModel。

2、ZUL页面

   @id(name)@init(expression)是用于为Binder指定一个ViewModel,其中name是ViewModel的名字,expression是一个EL2.0表达式,用于指定绑定的类。


           

           

3、Converter

(1)自带的converter,直接使用名字调用:如formatNumber

(2)自定义的converter,如vm.xxx

          需要在ViewModel中定义一个名为getTotalPriceConverter方法,并且返回值的类型为Conveter。

        

4、实现的效果图



5、匹配不同的view

MVVM设计模式的一个好处就是ViewModel是一个单一的类,它可以持有数据、动作和业务逻辑。这就意味着用户可以使用各种各样的View,只要这个View能够被应用到ViewModel上。

6、单元测试ViewModel

由于ViewModel只是一个简单的POJO,所以我们也可以在ViewModel上做单元测试,而不用管UI元素






0 0