SAP UI5 ManagedObject 的 Association 讲解
托管关联也形成 SAP UI5 对象之间的关系,但它们不定义关联对象的生命周期。换句话说,通过 association 关系关联在一起的两个 SAP UI5 对象,是松耦合的关系,其生命周期彼此独立。它们甚至可以在另一个关联对象已经被销毁的前提下仍然独立存在。这是 association 和 Aggregation 本质上的区别。
出于同样的原因,关联的内部存储不是直接的对象引用,而只是关联目标对象的 ID。
关联具有名称(例如 initialFocus
)、基数(“0..1”或“0..n”)并且属于特定类型(也必须是 ManagedObject 的子类或 UI5 接口).
ManagedObject 将提供方法来设置或获取基数为 0..1 的特定关联的关联对象(例如 setInitialFocus、getInitialFocus)。对于基数为 0..n 的关联,有一些方法可以获取所有关联对象(getRefItems),添加、插入或删除单个关联对象(addRefItem、insertRefItem、removeRefItem)或从关联中删除所有对象(removeAllRefItems) .
有关托管关联的声明、描述它的元数据以及自动生成以访问它的方法集的详细信息,可以在扩展方法的文档中找到。
关联不能绑定到模型。
克隆 ManagedObject 时,关联的结果取决于关联的目标对象与克隆操作的根之间的关系。如果关联对象是待克隆对象树的一部分(可通过来自克隆操作的根的聚合访问),则克隆关联将引用关联对象的克隆。否则,关联将引用与原始树中相同的对象。当 ManagedObject 被销毁时,仅关联的其他对象不受销毁操作的影响。
我们在 Chrome 开发者工具 console 面板里进行一些练习。
使用下列代码拿到 page control 实例的引用:
其中 __page0
id 从 Chrome 开发者工具 UI5 面板里获取。
然后使用 page.getAssociation
即可获取指定名称的 association 数据:
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/fb03e62d389654dd08e1c620a】。文章转载请联系作者。
评论