【发布时间】:2017-06-03 06:41:23
【问题描述】:
谁能解释一下聚合在 SAP UI5 中的确切含义? 我正在尝试制作一个具有两个视图的应用程序,并且我想从一个视图导航到另一个视图,反之亦然。 所以,APP控件有聚合,所以我很困惑什么是聚合?
【问题讨论】:
标签: sapui5
谁能解释一下聚合在 SAP UI5 中的确切含义? 我正在尝试制作一个具有两个视图的应用程序,并且我想从一个视图导航到另一个视图,反之亦然。 所以,APP控件有聚合,所以我很困惑什么是聚合?
【问题讨论】:
标签: sapui5
这个问题对 SO 来说有点太宽泛了,你之前并没有真正调查过,例如阅读文档。因此投反对票。
不过,我会将您链接到适当的 documentation page 并提供简短的摘录和说明:
控件可以聚合其他控件。这些具有聚合的控件用作容器或布局控件,应用程序可以向其中添加子控件。如果控件本身添加子控件并重用可用组件,它们也可以用作复合控件。在聚合中,子控件归父控件所有,并与父控件一起销毁。一个控件只能有一个聚合父级。将控件添加到另一个聚合中会将其从上一个父控件中删除。
简而言之,UI5 中的聚合与典型的OOP aggregation 的含义大致相同:它们表示has-a,或者相反地表示控件之间的is-a-part-of 关系。表格有行,行有单元格等等。相关控件的生命周期是绑定的(当父级被销毁时,子级也被销毁)。
严格查看聚合时,UI5 应用程序由控件树组成,其中一个级别的控件是上一级控件聚合的一部分。
每个聚合都有自己的语义。例如,sa.m.Table 的items 显示在header 和footer 之间,NavContainer 的pages 一次显示一个。聚合内容的行为一般在 SDK 参考中有所描述。
【讨论】:
来自Glossary的«聚合»的基本定义:
聚合(在 UI5 的上下文中)是两种 UI 元素类型之间的特殊关系。它用于定义父子关系 [...]。聚合的父端有cardinality0..1,而子端可能有0..1或0..*.
例如,list 可能有 0 个或多个项目。一个项目有 0 或 1 个列表作为其父项。因此,列表具有«items»的聚合。
在我们的例子中,从 sap.m.NavContainer 扩展而来的控件 sap.m.App 有一个名为 «pages» 的默认聚合,我们可以在其中定义从 sap.ui.core.Control 扩展的任何内容的集合作为其子控件。
页面:sap.ui.core.Control [ ]
但是仅仅手动将视图添加到<pages></pages> 是一种反模式,因为视图中通常有一个Page,并且单个页面占据了 100% 的高度,这会将其他视图推开。除此之外,它还使实现导航变得更加困难。
目前的最佳实践是使用所谓的«router»,通常在应用程序描述符 (manifest.json) 中与其他导航属性一起定义。它的姊妹控件Target takes care 将导航视图添加到«pages»聚合。要了解如何使用路由器实现导航,请查看以下资源:
【讨论】: