# 小结

在本章中,了解了模型、视图和代理。对于模型中的每个数据记录,视图都会实例化一个代理来可视化数据,这将数据从视图中分离。

模型可以是单个整数,其中index变量提供给代理使用。如果使用JavaScript数组作为模型,modelData变量表示数组当前索引的数据,而index用于保存索引。在更复杂的情况中,每个数据项需要提供多个值,使用被ListElement项填充的ListModel是更好的解决方案。

对于静态模型,Repeater可以被用作视图。很容易将它与定位器(例如RowColumnGrid或者Flow)结合起来构建用户界面部件。对于动态或大数据模型,诸如ListViewGridViewTableView之类的视图更合适,它们会根据需要即时创建代理实例,从而减少同时存在于场景中的元素数量。

GridViewTableView之间的区别在于:表视图需要具有多列数据的表类型的模型,而网格视图则是在网格中显示列表类型的模型。

视图中使用的代理,绑定到数据模型属性的既可以是静态项目,也可以是动态的;代理的状态取决于它们是否处于焦点状态。使用视图的onAddonRemove信号,它们甚至可以将它们的出现和消失进行动画处理。

最后更新: 12/17/2021, 11:17:15 PM