likes
comments
collection
share

SAP UI5 ManagedObject 的 Association 讲解

作者站长头像
站长
· 阅读数 18

托管关联也形成 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 实例的引用:

var page = sap.ui.getCore().byId("__page0");

其中 __page0 id 从 Chrome 开发者工具 UI5 面板里获取。

SAP UI5 ManagedObject 的 Association 讲解

然后使用 page.getAssociation 即可获取指定名称的 association 数据:SAP UI5 ManagedObject 的 Association 讲解