在 SAP UI5 中,控件是用户界面的基本构建块。控件可以是一个简单的文本框,也可以是一个复杂的表格。每个控件都有自己的属性 (properties),事件 (events) 和方法 (methods)。
而聚合 (aggregation) 是控件中的一种特殊类型的属性,它允许一个控件包含其他控件。比如,一个表格控件可能包含多个行控件,每个行控件又包含多个单元格控件。这种包含关系就是通过聚合来实现的。在这个例子中,表格是父控件,行和单元格是子控件。表格通过一个名为 "rows" 的聚合来包含行,行通过一个名为 "cells" 的聚合来包含单元格。
聚合有两种类型:默认聚合和命名聚合。默认聚合是控件的主要聚合,每个控件只能有一个默认聚合。比如,对于表格控件,其默认聚合就是 "rows"。而命名聚合则是控件的其他聚合,一个控件可以有多个命名聚合。比如,对于行控件,除了默认聚合 "cells" 之外,还可以有其他的命名聚合。
聚合的另一个重要特性是它们可以是单数或多数。单数聚合意味着一个控件只能包含一个子控件,而多数聚合则意味着一个控件可以包含多个子控件。在上面的例子中,"rows" 和 "cells" 都是多数聚合,因为它们都可以包含多个子控件。
聚合的使用使得控件的组织和管理变得简单而直观。可以通过聚合来添加、删除或替换子控件,而无需直接操作 DOM。此外,SAP UI5 还提供了一套完善的数据绑定机制,可以轻松地将数据绑定到聚合上。这极大地方便了数据驱动的应用开发。
以下是一个具体的例子,演示了如何在SAP UI5中使用Aggregation。在这个例子中,我们将创建一个简单的列表,然后将一些列表项添加到这个列表中。
如果大家想要循序渐进学习 SAP UI5,可以参考我的教程:
首先,我们需要创建一个新的SAP UI5应用。为此,我们需要在我们的HTML文件中包含SAP UI5库:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8">
<title>My SAP UI5 App</title>
<script src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
id="sap-ui-bootstrap"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="sap_belize">
</script>
<script>
sap.ui.getCore().attachInit(function () {
var oList = new sap.m.List("list", {
headerText: "My List"
});
var oItemTemplate = new sap.m.StandardListItem({
title: "{title}",
description: "{description}"
});
var aItems = [
{ title: "Item 1", description: "This is item 1" },
{ title: "Item 2", description: "This is item 2" },
{ title: "Item 3", description: "This is item 3" },
];
var oModel = new sap.ui.model.json.JSONModel({
items: aItems
});
oList.setModel(oModel);
oList.bindAggregation("items", "/items", oItemTemplate);
oList.placeAt("content");
});
</script>
</head>
<body class="sapUiBody" id="content">
</body>
</html>
-
在这个例子中,我们首先创建了一个新的
sap.m.List
控件,并设置了它的headerText
属性。接着,我们创建了一个sap.m.StandardListItem
控件,用作我们列表的模板。模板定义了每个列表项的外观和行为。 -
创建了一个包含三个对象的数组。每个对象都有一个
title
属性和一个description
属性,这些属性将被用于填充我们的列表项模板。 -
创建了一个新的
JSONModel
,并将我们的数组设置为模型的items
属性。模型是一个数据容器,它可以被多个控件共享和使用。 -
调用了
bindAggregation
方法,将我们的列表的items
aggregation绑定到模型中的/items
路径,并指定了我们之前创建的模板。这将导致列表为模型中的每个项创建一个新的列表项。 -
使用
placeAt
方法将我们的列表添加到HTML文档中的content
元素。