有人能解释一下SAP UI5中的聚合(Aggregation)是什么吗? 我正在尝试创建一个具有两个视图的应用程序,并且希望从一个视图导航到另一个视图,反之亦然。 因此,APP控件具有聚合,所以我对聚合感到困惑。
有人能解释一下SAP UI5中的聚合(Aggregation)是什么吗? 我正在尝试创建一个具有两个视图的应用程序,并且希望从一个视图导航到另一个视图,反之亦然。 因此,APP控件具有聚合,所以我对聚合感到困惑。
这个问题对于Stack Overflow来说稍微有些宽泛,而你在提问之前似乎没有进行过调查,例如阅读文档。因此被投了反对票。
尽管如此,我会链接适当的文档页面,并提供简短的摘录和说明:
简而言之,在UI5中,聚合与典型的OOP aggregation大多具有相同的含义:它们表示控件之间的控件可以聚合其他控件。这些具有聚合功能的控件充当容器或布局控件,应用程序可以向其添加子控件。如果控件本身添加子控件并重用可用组件,则它们也可以作为复合控件。在聚合中,子控件归父控件所有,并与父控件一起销毁。控件只能有一个聚合父级。将控件添加到另一个聚合中会将其从先前的父控件中删除。
has-a
或反过来的is-a-part-of
关系。表格有行,行有单元格等等。相关控件的生命周期是绑定的(当父级被销毁时,子级也会被销毁)。sa.m.Table
的items
在header
和footer
之间显示,NavContainer
的pages
逐个显示。聚合内容的行为通常在SDK参考中描述。例如,列表可以有 0 个或多个项。一个项有 0 个或 1 个列表作为其父元素。因此,列表具有「items」的聚合。聚合(在 UI5 上下文中)是两种 UI 元素类型之间的特殊关系。它用于定义父子关系。聚合的父端具有 基数 0..1,而子端可以具有 0..1 或 0..*。
sap.m.App
是从 sap.m.NavContainer
扩展而来的,它有一个名为“pages”的默认聚合,我们可以将任何从 sap.ui.core.Control
扩展的内容定义为其子控件的集合。
但是,仅手动将视图添加到pages: sap.ui.core.Control [ ]
<pages></pages>
中是一种反模式,因为视图通常包含一个 Page,一个单独的页面占据了整个高度,将其他视图推开。此外,这样做会使导航实现更加困难。