# 小结
在本章中,了解了模型、视图和代理。对于模型中的每个数据记录,视图都会实例化一个代理来可视化数据,这将数据从视图中分离。
模型可以是单个整数,其中index
变量提供给代理使用。如果使用JavaScript数组作为模型,modelData
变量表示数组当前索引的数据,而index
用于保存索引。在更复杂的情况中,每个数据项需要提供多个值,使用被ListElement
项填充的ListModel
是更好的解决方案。
对于静态模型,Repeater
可以被用作视图。很容易将它与定位器(例如Row
、Column
、Grid
或者Flow
)结合起来构建用户界面部件。对于动态或大数据模型,诸如ListView
、GridView
或TableView
之类的视图更合适,它们会根据需要即时创建代理实例,从而减少同时存在于场景中的元素数量。
GridView
和TableView
之间的区别在于:表视图需要具有多列数据的表类型的模型,而网格视图则是在网格中显示列表类型的模型。
视图中使用的代理,绑定到数据模型属性的既可以是静态项目,也可以是动态的;代理的状态取决于它们是否处于焦点状态。使用视图的onAdd
和onRemove
信号,它们甚至可以将它们的出现和消失进行动画处理。
← 高级技术 画布元素(Canvas) →