完整教程:SAP学习笔记 - 开发22 - 前端Fiori开发 数据绑定(Jason),Data Types(数据类型)

news/2025/10/6 15:56:57/文章来源:https://www.cnblogs.com/yxysuanfa/p/19127684

上一章讲了Icons(图标),Icon Explorer。

SAP学习笔记 - 开发21 - 前端Fiori开发 Icons(图标),Icon Explorer(图标浏览器)-CSDN博客

本章继续讲SAP Fiori开发的知识。

目录

1,Aggregation Binding(聚合绑定)

1),Invoices.json

2),manifest.json

3),InvoiceList.view.xml

4),App.view.xml

5),i18n.properties

6),运行看效果

2,Data Types (数据类型)

1),InvoiceList.view.xml

2),InvoiceList.controller.js

3),运行看效果

4),总结

- currency: "JPY"

- 属性的查找方法

1),如何查找官方文档

方法1:直接访问SAPUI5 API参考

方法2:通过开发环境查找

方法3:使用SAPUI5文档结构导航

2),ObjectListItem常用属性

a),核心属性

b),状态相关属性

c),数字格式化

d),其他属性


以下是详细内容。

1,Aggregation Binding(聚合绑定)

Aggregation Binding是SAP Fiori和SAPUI5框架中数据绑定的一个重要概念,它允许开发者在UI控件与其数据模型之间建立关联,是SAP Fiori开发中实现动态、数据驱动UI的核心技术,它大大简化了列表、表格等集合型控件的开发工作。

Aggregation Binding指的是将控件中的聚合(aggregation)属性与数据模型中的集合数据进行绑定。在SAPUI5中,聚合是指可以包含多个子元素的容器属性,例如:

  • Table控件的items聚合

  • List控件的items聚合

  • Form控件的formContainers聚合

Aggregation Binding通过以下方式工作:

  1. 将UI控件的聚合属性连接到数据模型中的集合

  2. 为集合中的每个数据项创建相应的子控件

  3. 自动保持UI与数据的同步

上面这一段是Deepseek里面的解释,还挺高大上的哈,我好像也没太看懂?‍

下面来看看实例安慰一下心情。

1),Invoices.json

这个就是咱们这个小例子里面的数据源啦。

其实数据源基本都应该是DB,从DB取数据生成jason,然后再绑定到Fiori前端,咱一步步来。

{    "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文件里数据名,可以简单理解为DB的表名,那下面就是数据行和字段

2),manifest.json

{  "_version": "1.65.0",  "sap.app": {	"id": "ui5.walkthrough",	"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": "ui5.walkthrough.i18n.i18n",		  "supportedLocales": [""],		  "fallbackLocale": ""		}	  },      "invoice": {        "type": "sap.ui.model.json.JSONModel",        "uri": "Invoices.json"      }	},	"rootView": {		"viewName": "ui5.walkthrough.view.App",		"type": "XML",		"id": "app"	},	"resources": {	  "css": [		{		  "uri": "css/style.css"		}	  ]	}  }}

- "invoice": {  =》这是view里面使用的model 名称

- "type": "sap.ui.model.json.JSONModel", =》这个说的是数据源的类型

- "uri": "Invoices.json" =》这个和Type配套,指向的jason文件的路径(当前文件同路径)和名称

 "invoice": {
   "type": "sap.ui.model.json.JSONModel",
   "uri": "Invoices.json"
 }

将来等连接DB的时候,这里会改成SAP提供的API(Odata)

3),InvoiceList.view.xml

   invoiceListTitle}"      class="sapUiResponsiveMargin"      width="auto"      items="{invoice>/Invoices}" >               Quantity} x {invoice>ProductName}"/>

这个视图说的是把Invoices.json里的内容给通过List展示出来

- items="{invoice>/Invoices}" >

 invoice 如前述,是manifest.json 里面说的是model 名

 > 可以理解为下级访问符

 /Invoices =》/ 是绝对路径,Invoices 是 Invoices.json文件里面的名叫 Invoices(表名)的数据

- title="{invoice>Quantity} x {invoice>ProductName}"/>

 这个是个简写,完整写法是 invoice>/Invoices>Quantity,为了简略化,把>/Invoices 给省去了

<List
   headerText="{i18n>invoiceListTitle}"
   class="sapUiResponsiveMargin"
   width="auto"
   items="{invoice>/Invoices}" > 
   <items>
      <ObjectListItem
         title="{invoice>Quantity} x {invoice>ProductName}"/>
   </items>
</List>

4),App.view.xml

										homePageTitle}">

- <mvc:XMLView viewName="ui5.walkthrough.view.InvoiceList"/>

  这个是嵌套视图,这样就把 InvoiceList.view.xml 视图给加进来了,还是很方便的哈

SAP学习笔记 - 开发20 - 前端Fiori开发 Nest View(嵌套视图) ,Fragment(片段)-CSDN博客

5),i18n.properties

# App DescriptorappTitle=Hello WorldappDescription=A simple walkthrough app that explains the most important concepts of OpenUI5 # Hello PanelshowHelloButtonText=Say HellohelloMsg=Hello {0}homePageTitle=WalkthroughhelloPanelTitle=Hello WorldopenDialogButtonText=Say Hello With DialogdialogCloseButtonText=Ok # Invoice ListinvoiceListTitle=Invoices

暂时还没有Controller,就是个数据暂时,跑一下看看

6),运行看效果

2,Data Types (数据类型)

数据类型,比较典型的是金额的话,需要对应的Currency,不然也不知道是多少钱是吧。

下面来看具体的例子。

1),InvoiceList.view.xml

    invoiceListTitle}"        class="sapUiResponsiveMargin"        width="auto"        items="{invoice>/Invoices}">                    Quantity} x {invoice>ProductName}"                number="{                    parts: [                        'invoice>ExtendedPrice',                        'view>/currency'                    ],                    type: 'Currency',                    formatOptions: {                        showMeasure: false                    }                }"                numberUnit="{view>/currency}"/>

- controllerName="ui5.walkthrough.controller.InvoiceList"

  加了个Controller

- ObjectListItem: 列表中的每一项使用ObjectListItem控件显示

- core:require: 动态加载Currency类型用于数据格式化

- title: 显示数量和产品名称的组合

- number: 复杂绑定,包含:

  - parts: 绑定多个数据源(价格和货币类型)

  - type: 使用Currency类型格式化,这里的主要意义就是把小数点都保留成 2位的

  - formatOptions: 格式化选项(不显示货币符号)

- numberUnit: 显示货币单位。这个其实和 number里的Currency是一个东西,只不过这个显示的小

 <ObjectListItem
     core:require="{
         Currency: 'sap/ui/model/type/Currency'
     }"
     title="{invoice>Quantity} x {invoice>ProductName}"
     number="{
         parts: [
             'invoice>ExtendedPrice',
             'view>/currency'
         ],
         type: 'Currency',
         formatOptions: {
             showMeasure: false
         }
     }"
     numberUnit="{view>/currency}"/>

2),InvoiceList.controller.js

sap.ui.define([	"sap/ui/core/mvc/Controller",	"sap/ui/model/json/JSONModel"], (Controller, JSONModel) => {	"use strict"; 	return Controller.extend("ui5.walkthrough.controller.InvoiceList", {		onInit() {			const oViewModel = new JSONModel({				currency: "EUR"			});			this.getView().setModel(oViewModel, "view");		}	});});

- this.getView().setModel(oViewModel, "view"); 

  其实就是把一个JasonModel 给set 到 View上面,名称就叫 “view"。

  有关JasonModel,可以参照下面文章。

SAP学习笔记 - 开发15 - 前端Fiori开发 Boostrap,Controls,MVC(Model,View,Controller),Modules-CSDN博客

可以看到,这个Controller的作用就是弄一个Currency(这里是EUR),因为咱们json里没有嘛

真正开发当中,这个基本都是从DB取。 

3),运行看效果

把 showCurrency: true

显示的就是这样的了,EUR 单位是不是有两个,下面那个小的就是 numberUnit显示的

就是说如果你不想显示小文字的货币单位,那你完全可以去掉 numberUnit

 

去掉 numberUnit,就显示成这样

 

4),总结

本节所说的Data Types的意思是说,Fiori 页面的格式化表示,你不需要自己写多少代码,

这些Data Types(数据类型)本身就自带格式,只要设上了,就会自带格式化。

- currency: "JPY"

  这个Currency 的意义还有一个,这个需要说一下

  就是每个币种,对保留小数位数的要求是不一样的,比如日元,没有小数;欧元,需要两位小数

它这个地方好像还没有太完善哈,如果原始数据有小数的话,JPY还是保留了 2位小数

而如果第二位小数为 0,则会被删掉

不管怎么说吧,好像跟SAP里面不太一样,不知道这个可不可以设置小数位数

那要是硬搞,能让JPY不显示小数吗?网上说也是可以的

通过属性设置:formatOptions > decimals: 0

TODO:惨,不好用

我估摸着,现在只能是 Jason数据过来的时候,就给整好,不要啥啥都靠Fiori 前端

- 属性的查找方法

  下面咱们以 ObjectListItem 为例,来研究一下查找方法。

1),如何查找官方文档
方法1:直接访问SAPUI5 API参考
  1. 访问 SAPUI5 SDK - https://sapui5.hana.ondemand.com/

  2. 在顶部搜索栏输入"ObjectListItem"

  3. 在搜索结果中选择"ObjectListItem (API)"或"ObjectListItem (Samples)"

点 Control Sample 旁边那个链接,还能有例子提供

 

方法2:通过开发环境查找
  1. 在SAP Web IDE或Business Application Studio中

  2. 将光标放在控件名称上按F1

  3. 或右键点击控件选择"API Reference"

方法3:使用SAPUI5文档结构导航
  1. 进入API Reference部分

  2. 导航至 sap.m > List Items > ObjectListItem

2),ObjectListItem常用属性

ObjectListItem是SAPUI5中用于显示复杂列表项的控件,常用属性包括:

a),核心属性
b),状态相关属性
c),数字格式化
d),其他属性

 

 

以上就是本篇的全部内容。

更多SAP顾问业务知识请点击下面目录链接或东京老树根的博客主页

https://blog.csdn.net/shi_ly/category_12216766.html

东京老树根-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析:python可视化:端午假期旅游火爆原因分析

深入解析:python可视化:端午假期旅游火爆原因分析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

宁夏网站设计联系电话免费网站报价单怎么做

力扣每日刷题 一、704. 二分查找1.1、题目1.2、解题思路1.3、代码实现——C1.4、 总结&易错 二、27. 移除元素2.1&#xff1a;题目2.2、解题思路2.3、代码实现——C1.4、 总结&易错 一、704. 二分查找 1.1、题目 704. 二分查找 1.2、解题思路 题型&#xff1a;数组…

北京网站建设的服务公司找网站建设需要问什么软件

AI与Prompt&#xff1a;解锁软件开发团队的魔法咒语 写在最前面论文&#xff1a;基于ChatGPT的自协作代码生成将团队协作理论应用于代码生成的研究自协作框架原理1、DOL任务分配2、共享黑板协作3、Instance实例化 案例说明简单任务&#xff1a;基本操作&#xff0c;生成的结果1…

烟台市住房和城乡建设厅网站网络营销师证书怎么考

使用github action 拉取国外docker镜像 k8s部署经常用到国外镜像&#xff0c;如果本地无法拉取可以考虑使用github action环境 github action的ci服务器在国外&#xff0c;不受中国防火墙影响github action 自带docker命令运行时直接将你仓库代码拉取下来 步骤 你的国内dock…

网站知名度推广wordpress 4.9更新

虾皮&#xff08;Shopee&#xff09;API在个性化推荐系统中的应用可能涉及多个方面&#xff0c;如商品推荐、用户行为分析、广告投放等。但具体的API使用方法和代码实现会因虾皮API的具体接口和功能而有所不同。 以下是一个简化的示例&#xff0c;展示如何使用一个虚构的虾皮A…

做企业网站推广多少钱玛伊网站做兼职加入要多少钱

大体思路&#xff0c;有n台mc&#xff0c;要dump出数据&#xff0c;n台进行对比&#xff0c;看数据是否一致&#xff0c;设计到同时dump的问题&#xff0c;server断发条指令给这n台mc&#xff0c;mc同时去dump把结果返回给server端&#xff0c;server端把这些结果进行对比serve…

https(SSL)证书危机和可行的解决方案 - 教程

https(SSL)证书危机和可行的解决方案 - 教程2025-10-06 15:42 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

电商网站建设多少钱策划书word模板范文

互联网构建于开放互联的中立原则之上&#xff0c;公平接入&#xff0c;数据互联互通&#xff0c;流量被无差别对待&#xff0c;这意味着互联网本质上是匿名&#xff0c;去中心的&#xff0c;这与我们的现实世界完全不同。 但互联网上的主流业务却是 c/s 产销模式&#xff0c;试…

做的比较好的手机网站网店美工分为几个级别

目录 一、sort 1.1sort简介 语法 参数 功能 适用容器 1.2sort的用法 1.3自定义比较函数 示例 1265蓝桥题 —— 排序 二、min和max函数 三、min_element和max_element 497蓝桥题 —— 成绩分析 四、nth_element 一、sort 1.1sort简介 sort函数包含在头文件<a…

详细介绍:WIN11+VSCODE搭建c/c++开发环境

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

笔记:寻找适合自己的简历工具(YAMLResume)

正如提交的答卷一般,易于阅读的排版,恰当的用词,总能加不少印象分。如果我的简历能让人一目了然,短时间内了解我,那我的简历就是成功的,至于会不会录取这个另说。 同时为了加快简历的制作,不必囚禁在排版/格式调…

实用指南:Linux 权限管理入门:从基础到实践

实用指南:Linux 权限管理入门:从基础到实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

用Google的DeepResearch+音频生成功能生成自己感兴趣内容的Podcast

用Google的DeepResearch+音频生成功能生成自己感兴趣内容的Podcast先选定一个话题,然后写一个比较详细的 Prompt:如果对研究方案不满意,或者有遗忘的内容,可以再修改:修改完毕,如果满意的话就可以开始生成了。等…

Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 9 月发布)

Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 9 月发布)Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 9 月发布) Windows 11, version 25H2 Enterprise Arm64 x64 (Released Sep 2025) …

重庆网站建设首选卓光优化国内访问wordpress

文章目录 1.Git介绍2.安装配置2.1 查看配置信息 3.文件管理3.1 创建仓库3.2 版本回退3.3 工作流程3.4 撤销修改3.5 删除文件 4.远程仓库4.1 连接远程库4.2 本地上传至远程4.3 从远程库克隆到本地 5.分支管理5.1 创建分支5.2 删除分支5.3 合并分支解决冲突 参考&#xff1a; Git…

某企业集团网站建设方案论文中国建设工程网站

本文简介 戴尬猴&#xff0c;我是德育处主任 本文介绍如何使用 OpenLayers.js &#xff08;后面简称 ol&#xff09;。ol 是一个开源 JavaScript 库&#xff0c;可用于在Web页面上创建交互式地图。 ol能帮助我们在浏览器轻松地使用地图功能&#xff0c;例如地图缩放、地图拖动…

Windows 11 25H2 正式版发布,新增功能简介

Windows 11 25H2 正式版发布,新增功能简介Windows 11 25H2 正式版发布,新增功能简介 Windows 11 25H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 9 月发布) Windows 11, version 25H2 Enterprise Arm64 x64 (Relea…

滨海新区网站建设网站建设方案确认表

在Qt中由QCoreApplication统一管理Qt事件的收发和销毁,其中sendEvent为阻塞式发送,用于单线程的事件发送;postevent为非阻塞式发送,构造事件的线程和接受事件的线程可以为两个线程。 最近在做一个个人项目ShaderLab 需要绘制OpenGL实时渲染的图像,由于OpenGL渲染基本都放…

网站开发实用技术 代码网站下载的视频怎么变成本地视频

简介&#xff1a; 7月16日&#xff0c;以“原生安全二倍速&#xff1a;全面融入基础设施”为主题的阿里云原生安全线上专题活动收官&#xff0c;诠释由云而生的能力如何解决数字经济时代的安全新挑战&#xff0c;让高等级安全作为一种基础设施&#xff0c;成为数字业务发展的“…

网站建设的财务分险医疗类网站哪家做的好

文章目录 1. 统一响应1.1 CommonResult 1. 统一响应 前端调用api接口获得统一的响应&#xff1a; 成功&#xff0c;返回成功的状态码和数据&#xff1b;失败&#xff0c;返回失败的状态码和错误提示。 在标准的 RESTful API 的定义&#xff0c;是推荐使用 HTTP 响应状态码 (…