一个例子说明鸿蒙应用的MVVM架构


MVVM 它是 Model-View-ViewModel 的缩写,三层分工如下表:
|
|
|
|
|
|---|---|---|---|
| M |
|
|
|
| V |
|
|
|
| VM |
|
|
|
2、一个人员列表的例子

export interface PersonInfo {id: number;name: string;gender: string;age: number;}
@ObservedV2export classPersonViewModel{@Trace persons: PersonInfo[] = []; // 数据变了,界面自动刷新shouldHighlightId(person): boolean {return person.age < 14; // 未成年ID标红}}
2.3. View 层:只画界面,不处理业务逻辑
@Entry@ComponentV2struct Index {@Local viewModel: PersonViewModel = new PersonViewModel();build() {List() {ForEach(this.viewModel.persons, (person) => {Text(person.name).fontColor(this.viewModel.shouldHighlightId(person) ? '#FF0000' : '#333333')})}}}
三、依赖关系
如图所示:


// 定义 PersonInfo 接口 |
import { PersonInfo } from '../model/PersonModel'; |
import { PersonInfo, samplePersons } from '../model/PersonModel'; |
import { PersonInfo } from '../model/PersonModel'; index: number) => { |
刚开始可能觉得“多写几个文件好麻烦”,但等项目上了规模,改需求的时候就会发现——
当初多分的层,都是为未来的自己少掉头发,
什么? 头发,什么是头发?
夜雨聆风