SAPUI5基础知识25 - 聚合绑定(Aggregation Binding)

2024-09-03 17:04

本文主要是介绍SAPUI5基础知识25 - 聚合绑定(Aggregation Binding),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 背景

Aggregation Binding 是 SAPUI5 中的一种数据绑定方式,用于将数据模型中的集合(如数组)绑定到 UI 控件的聚合(如列表项、表格行等)

常见的场景包括将一个数组绑定到 sap.m.Listitems 聚合,或者将一个数组绑定到 sap.ui.table.Tablerows 聚合。

2. 练习

2.1 创建本地的JSON文件

在前序练习的基础上,让我们在webapp文件夹下,建立一个新的Invoices.json文件,用于存储数组数据。

改动后的项目文件结构如下:
在这里插入图片描述

JSON文件的内容如下:

{"Invoices": [{"ProductName": "Pineapple","Quantity": 21,"ExtendedPrice": 87.2,"ShipperName": "Fun Inc.","ShippedDate": "2015-04-01T00:00:00","Status": "A"},{"ProductName": "Milk","Quantity": 4,"ExtendedPrice": 10,"ShipperName": "ACME","ShippedDate": "2015-02-18T00:00:00","Status": "B"},{"ProductName": "Canned Beans","Quantity": 3,"ExtendedPrice": 6.85,"ShipperName": "ACME","ShippedDate": "2015-03-02T00:00:00","Status": "B"},{"ProductName": "Salad","Quantity": 2,"ExtendedPrice": 8.8,"ShipperName": "ACME","ShippedDate": "2015-04-12T00:00:00","Status": "C"},{"ProductName": "Bread","Quantity": 1,"ExtendedPrice": 2.71,"ShipperName": "Fun Inc.","ShippedDate": "2015-01-27T00:00:00","Status": "A"}]
}

Invoices.json文件中包含了5张json格式的发票,我们将使用此JSON文件中的数据数据,绑定控件sap.m.List

JSON是一种非常轻量级的存储数据的格式,可以直接用作SAPUI5应用程序的数据源。

2.2 创建JSON模型

接下来,让我们在manifest.json中的sap.ui5部分添加此发票模型。

在这里插入图片描述

因为我们想要一个 JSONModel,所以我们将type设置为 sap.ui.model.json.JSONModel
uri是相对于组件的数据路径 (相对路径)。

通过这些配置,SAPUI5组件会自动从Invoices.json文件中加载发票数据,并实例出化一个名字为invoiceJSONModel

实例化的 JSONModel会被绑定在组件上,因而这个模型在应用程序中是全局可见的。

改动后的manifest.json文件内容如下:

{"_version": "1.58.0","sap.app": {"id": "zsapui5.test","i18n": "i18n/i18n.properties","title": "{{appTitle}}","description": "{{appDescription}}","type": "application","applicationVersion": {"version": "1.0.0"}},"sap.ui": {"technology": "UI5","deviceTypes": {"desktop": true,"tablet": true,"phone": true}},"sap.ui5": {"dependencies": {"minUI5Version": "1.108.0","libs": {"sap.ui.core": {},"sap.m": {}}},"models": {"i18n": {"type": "sap.ui.model.resource.ResourceModel","settings": {"bundleName": "zsapui5.test.i18n.i18n","supportedLocales": [""],"fallbackLocale": ""}},"invoice": {"type": "sap.ui.model.json.JSONModel","uri": "Invoices.json"}},"rootView": {"viewName": "zsapui5.test.view.App","type": "XML","id": "app"},"resources": {"css": [{"uri": "css/style.css"}]}}
}

2.3 创建新的视图文件

接下来,在视图文件夹下,创建一个新的视图文件InvoiceList.view.xml来显示发票信息。

变动后的项目结构如下:
在这里插入图片描述

InvoiceList.view.xml视图文件的内容如下:

<mvc:Viewxmlns="sap.m"xmlns:mvc="sap.ui.core.mvc"><ListheaderText="{i18n>invoiceListTitle}"class="sapUiResponsiveMargin"width="auto"items="{invoice>/Invoices}" ><items><ObjectListItemtitle="{invoice>Quantity} x {invoice>ProductName}"/></items></List>
</mvc:View>

InvoiceList.view.xml视图中,将显示一个带有自定义标题的列表控件sap.m.List

sap.m.List控件的items聚合绑定到JSON数据的根路径Invoices,即items="{invoice>/Invoices}"

因为我们定义的是一个命名模型(named model),我们必须在每个绑定定义前加上标识符invoice,用于指定此命名模型。

<items>聚合中,我们为列表定义了模板,该模板将对测试数据中的每个发票自动重复。更准确地说,我们其实是使用了sap.m.ObjectListItem<items>聚合的每个聚合子项创建控件。

列表项的title属性绑定到单个发票的属性。这是通过定义一个相对路径(开头没有/)来实现的。这是可行的,因为我们通过items={invoice>/Invoices}<items>聚合绑定到发票上。

2.4 显示新的视图文件

然后,让我们在应用视图中,添加刚刚创建的InvoiceList.view.xml视图,这样,就可以将发票信息显示在HelloPanel下方的位置。
在这里插入图片描述

改动后的App.view.xml文件内容如下:

<mvc:ViewcontrollerName="zsapui5.test.controller.App"xmlns="sap.m"xmlns:mvc="sap.ui.core.mvc"displayBlock="true"
><!--在视图中想要使用的库的命名空间列表--><Shell><App class="myAppDemoWT"><pages><Page title="{i18n>homePageTitle}"><content><mvc:XMLView viewName="zsapui5.test.view.HelloPanel" /><mvc:XMLView viewName="zsapui5.test.view.InvoiceList" /></content></Page></pages></App></Shell>
</mvc:View>

2.5 维护i18n

最后,在i18n文件中,为新增的文本添加键值对。
在这里插入图片描述

改动后的i18n文件内容如下:

# App Descriptor
appTitle=Hello World
appDescription=A simple app that explains the most important concepts of SAPUI5# Hello Panel
showHelloButtonText=Say Hello
helloMsg=Hello {0}homePageTitle=homePageTitle
helloPanelTitle=PanelTitle
openDialogButtonText=Say Hello With Dialog
dialogCloseButtonText=Ok# Invoice List
invoiceListTitle=Invoices

2.6 运行程序

运行应用程序,我们可以看到新增加的控件 sap.m.List ,并可以看到显示出来的发票信息。
在这里插入图片描述
通过ctrl + shift + alt + s打开诊断辅助工具,我们可以看到新增加的列表控件,并可以看到每一行对应生成的item控件。
在这里插入图片描述

3. 小结

本文总结了SAPUI5中聚合绑定的概念,并通过一个具体的示例展示了其用法。

这篇关于SAPUI5基础知识25 - 聚合绑定(Aggregation Binding)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133520

相关文章

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

SpringMVC入参绑定特别注意

1.直接在controller中定义一个变量,但是此种传输方式有一个限制就是参数名和请求中的参数名必须保持一致,否则失效。 @RequestMapping("test2")@ResponseBodypublic DBHackResponse<UserInfoVo> test2(String id , String name){UserInfoVo userInfoVo = new UserInf

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: