当前位置: 首页 > news >正文

SAP Fiori 实战课程(二):新建页面

课程回顾

上一课中,利用Visual studio Code 新建、并运行了一个Demo工程。可以实现对项目的启动,启动后进入一个List清单。

那么本次课程的目前就是在上一节Demo的基础上,从零开始新建一个完整的页面。实现从首页清单,选择行后,鼠标点击,进入下一个页面。

准备工作

在开始之前,把上一节代码中的页面的显示的清单抽取成一个单独的json文件,这样controller层的代码就显得没有那么臃肿。但是标准版的做法其实是需要把清单数据,直接放到JSONModel对象里面。

这里演示下View层的数据如何从指定文件夹取。

1 首先把product.json文件,放在webapp文件夹下

2 在manifast.json文件内model属性配置如下:

"models": {"i18n": {"type": "sap.ui.model.resource.ResourceModel","settings": {"bundleName": "project1.i18n.i18n"}},"products": {"type": "sap.ui.model.json.JSONModel","uri": "products.json"},

主要是为了引入products.json文件。

然后修改View1的xml和controller如下:

<mvc:View controllerName="project1.controller.View1"xmlns:mvc="sap.ui.core.mvc" displayBlock="true"xmlns="sap.m"><Page id="page" title="{i18n>title}"><content><Listitems="{products>/ProductCollection}"headerText="Products"><ObjectListItemtitle="{products>Name}"type="Active"press="onListItemPress"number="{parts:[{path:'products>Price'},{path:'products>CurrencyCode'}],type: 'sap.ui.model.type.Currency',formatOptions: {showMeasure: false}}"numberUnit="{products>CurrencyCode}"><firstStatus><ObjectStatustext="{products>Status}"state="{path: 'products>Status',formatter: 'project1.controller.Formatter.status'}" /></firstStatus><ObjectAttribute text="{products>WeightMeasure} {products>WeightUnit}" /><ObjectAttribute text="{products>Width} x {products>Depth} x {products>Height} {products>DimUnit}" /></ObjectListItem></List></content></Page>
</mvc:View>

主要的区别是所有的属性前面都加入了 products>。

View1.controller.js修改后:

sap.ui.define(["sap/ui/core/mvc/Controller",'sap/m/MessageToast','./Formatter','sap/ui/model/json/JSONModel'
],/*** @param {typeof sap.ui.core.mvc.Controller} Controller*/function (Controller, MessageToast, Formatter, JSONModel) {"use strict";return Controller.extend("project1.controller.View1", {onInit: function () {},onListItemPress: 

相关文章:

SAP Fiori 实战课程(二):新建页面

课程回顾 上一课中,利用Visual studio Code 新建、并运行了一个Demo工程。可以实现对项目的启动,启动后进入一个List清单。 那么本次课程的目前就是在上一节Demo的基础上,从零开始新建一个完整的页面。实现从首页清单,选择行后,鼠标点击,进入下一个页面。 准备工作 在开…...

【Rust光年纪】超越ORM:探索Rust语言多款数据库客户端库的核心功能和使用场景

数据库操作新选择&#xff1a;从异步操作到连接管理&#xff0c;掌握Rust语言数据库客户端库的全貌 前言 在现代软件开发中&#xff0c;与数据库进行交互是一个常见的任务。Rust语言作为一种高性能、内存安全的编程语言&#xff0c;拥有丰富的生态系统来支持各种数据库操作。…...

解决:事件监听器 addEventListener 被多次调用

背景&#xff1a; 给一个元素添加了事件监听&#xff0c;click 会触发 然而在实际场景中&#xff0c;点击一次&#xff0c;事件会被触发两次 阻止冒泡也没有用 解决&#xff1a; 使用API&#xff1a;event.stopImmediatePropagation() stopImmediatePropagation() 方法可防止…...

配置RIPv2的认证

目录 一、配置IP地址、默认网关、启用端口 1. 路由器R1 2. 路由器R2 3. 路由器R3 4. Server1 5. Server2 二、搭建RIPv2网络 1. R1配置RIPv2 2. R2配置RIPv2 3. Server1 ping Server2 4. Server2 ping Server1 三、模拟网络攻击&#xff0c;为R3配置RIPv2 四、在R…...

前端调试技巧:动态高亮渲染区域

效果&#xff1a; 前端界面的渲染过程、次数&#xff0c;会通过高亮变化来显示&#xff0c;通过这种效果排除一些BUG 高亮 打开方式 F12进入后点击ESC&#xff0c;进入rendering&#xff0c;选择前三个即可&#xff08;如果没有rendering&#xff0c;点击橘色部分勾选上&…...

深克隆与浅克隆的区别与实现

在软件开发中&#xff0c;克隆对象是一个常见需求。克隆的方式主要有两种&#xff1a;深克隆&#xff08;Deep Clone&#xff09;和浅克隆&#xff08;Shallow Clone&#xff09;。了解它们的区别及其实现方法&#xff0c;对于编写高效、安全的代码非常重要。 深克隆与浅克隆的…...

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(六)-无人机直接C2通信

目录 引言 5.4 直接C2通信 5.4.1 概述 5.4.2 A2X直接C2通信服务的授权策略 5.4.3 USS使用A2X直接C2通信服务的C2授权程序 5.4.4 直接C2通信建立程序 引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别…...

认识和安装R的扩展包,什么是模糊搜索安装,工作目录和空间的区别与设置

R语言以其强大的功能和灵活的扩展性,成为了无数数据分析师和研究者的首选工具。R的丰富功能和海量扩展包直接相关,但如何高效管理这些扩展包,进而充分发挥R的强大潜力?本文将为您揭示这些问题的答案。 一、R的扩展包 R的包(packages)是由R函数、数据和预编译代码组成的一…...

解决STM32开启定时器时立即进入一次中断程序问题

转自 解决STM32开启定时器时立即进入一次中断程序问题_stm32f407定时器初始化自动进入一次-CSDN博客 配置STM32定时器时&#xff0c;定时器中断使能、定时器使能、清除更新中断标志位&#xff0c;三者不同顺序程序执行时有不同效果&#xff0c;具体如下&#xff1a; TIM_Clea…...

Unity UGUI 之EventSystem

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 1.EventSystem是什么&#xff1f; 有需要请查看手册&#xff1a;Unity - 手册&#xff1…...

USB转多路UART - USB 基础

一、 前言 断断续续做了不少USB相关开发&#xff0c;但是没有系统去了解过&#xff0c;遇到问题就很被动了。做这个USB转UART的项目就是&#xff0c;于是专门花了一天的时间学习USB及CDC相关&#xff0c;到写这文章时估计也忘得差不多了&#xff0c;趁项目收尾阶段记录一下&am…...

接近50个实用编程相关学习资源网站

Date: 2024.07.17 09:45:10 author: lijianzhan 编程语言以及编程相关工具等实用性官方文档网站 C语言文档&#xff1a;https://learn.microsoft.com/zh-cn/cpp/c-languageMicrosoft C、C和汇编程序文档&#xff1a;https://learn.microsoft.com/zh-cn/cppJAVA官方文档&#…...

在数据操作中使用SELECT子句

目录 一、INSERT 语句中使用 SELECT子句 二、UPDATE 语句中使用 SELECT子句 三、DELETE 语句中使用 SELECT子句 一、INSERT 语句中使用 SELECT子句 在 INSERT 语句中使用 SELECT子句&#xff0c;可以将一个或多个表或视图中的数据添加到另外一个表中。使用 SELECT 子句还可以…...

Golang | Leetcode Golang题解之第274题H指数

题目&#xff1a; 题解&#xff1a; func hIndex(citations []int) int {// 答案最多只能到数组长度left,right:0,len(citations)var mid intfor left<right{// 1 防止死循环mid(leftright1)>>1cnt:0for _,v:range citations{if v>mid{cnt}}if cnt>mid{// 要找…...

区块链技术在智能家居中的创新应用探索

随着物联网技术的发展和智能家居市场的蓬勃发展&#xff0c;区块链技术作为一种去中心化的数据管理和安全保障技术&#xff0c;正在逐渐引入智能家居领域&#xff0c;并为其带来了新的创新应用。本文将探讨区块链技术在智能家居中的具体应用场景、优势以及未来发展方向。 智能家…...

无需业务改造,一套数据库满足 OLTP 和 OLAP,GaiaDB 发布并行查询能力

在企业中通常存在两类数据处理场景&#xff0c;一类是在线事务处理场景&#xff08;OLTP&#xff09;&#xff0c;例如交易系统&#xff0c;另一类是在线分析处理场景&#xff08;OLAP&#xff09;&#xff0c;例如业务报表。 OLTP 数据库擅长处理数据的增、删、改&#xff0c…...

PHP 表单验证:邮件和URL

PHP 表单验证&#xff1a;邮件和URL 在Web开发中&#xff0c;表单验证是一个至关重要的环节&#xff0c;它确保了用户输入的数据的有效性和安全性。特别是在处理邮件地址和URL时&#xff0c;准确的验证尤为重要。本文将详细介绍如何使用PHP来验证表单中的邮件地址和URL。 邮件…...

前端八股文 路由的懒加载

为什么会有 路由的懒加载 在现代单页应用&#xff08;SPA&#xff09;的开发中&#xff0c;路由懒加载是一种提升应用性能的关键技术。通过按需加载组件&#xff0c;而非在应用启动时一次性加载所有模块&#xff0c;可以显著减少初次加载时间和资源消耗。本文旨在深入探讨前端…...

HarmonyOS Web组件(二)

1. HarmonyOS Web组件 官方文档 1.1. 混合开发的背景和好处 混合开发&#xff08;Hybrid Development&#xff09;是一种结合原生应用和Web应用的开发模式&#xff0c;旨在同时利用两者的优势。随着移动应用需求的多样化和复杂化&#xff0c;单一的开发方式往往难以满足所有…...

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号2

基础认证题库请移步&#xff1a;HarmonyOS应用开发者基础认证题库 注&#xff1a;有读者反馈&#xff0c;题库的代码块比较多&#xff0c;打开文章时会卡死。所以笔者将题库拆分&#xff0c;单选题20个为一组&#xff0c;多选题10个为一组&#xff0c;题库目录如下&#xff0c;…...

东芝成熟制程代工服务解析:More-than-Moore战略与欧洲市场机遇

1. 东芝的“伦敦呼唤”&#xff1a;一次面向欧洲的成熟制程代工服务解析最近在梳理半导体产业动态时&#xff0c;东芝在2012年的一项战略动作引起了我的注意。这并非关于其最前沿的3D NAND闪存&#xff0c;而是一项看似“复古”的业务拓展&#xff1a;面向欧洲客户开放其成熟制…...

NotebookLM与Google Drive整合性能瓶颈实测报告:单次索引超10万页PDF时,延迟突增217%的根源与绕行方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM与Google Drive整合性能瓶颈实测报告&#xff1a;单次索引超10万页PDF时&#xff0c;延迟突增217%的根源与绕行方案 延迟突增的核心成因 实测表明&#xff0c;当 NotebookLM 通过 Google Dr…...

【LangChain】 入门:从分步调用到链式编程

LangChain 入门&#xff1a;从分步调用到链式编程本文基于一段翻译助手的示例代码&#xff0c;讲解 LangChain 的核心概念、输出解析器的作用&#xff0c;以及普通写法与链式写法的对比。一、LangChain 是什么&#xff1f; 名字拆解缩写含义LangLanguage&#xff08;语言&#…...

Go语言单例模式如何实现_Go语言单例模式教程【通俗】

sync.Once是最安全的单例初始化方式&#xff0c;天然解决并发首次调用竞态问题&#xff0c;只执行一次闭包&#xff1b;须作包级或结构体字段&#xff0c;避免局部变量失效&#xff1b;panic后会持续失败&#xff0c;需自行兜底。Go 里 sync.Once 是最安全的单例初始化方式直接…...

别再只测SSRF读内网了:手把手教你用dict/gopher协议探测并攻击内网Redis服务

从SSRF到内网Redis渗透&#xff1a;实战进阶指南 发现SSRF漏洞只是开始&#xff0c;真正的挑战在于如何将其转化为实际的攻击路径。当目标内网存在Redis服务时&#xff0c;一个看似简单的SSRF可能成为整个内网沦陷的起点。本文将带你深入探索如何通过dict和gopher协议&#xff…...

算法创新驱动AI效率革命:算力增强型进步如何超越摩尔定律

1. 项目概述&#xff1a;算法进步如何重塑计算机视觉的效率版图如果你在2012年告诉一个计算机视觉研究员&#xff0c;十年后我们能在ImageNet上训练出准确率超过90%的模型&#xff0c;他可能会觉得这需要天文数字般的计算资源。但现实是&#xff0c;我们不仅做到了&#xff0c;…...

鸣潮自动化工具ok-ww终极指南:3步配置解放双手的智能助手

鸣潮自动化工具ok-ww终极指南&#xff1a;3步配置解放双手的智能助手 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否厌倦了…...

我们给大模型接上了CI/CD流水线,测试通过率从60%飙升到95%

在软件测试领域&#xff0c;质量保障体系的进化从未停歇。当大语言模型&#xff08;LLM&#xff09;从实验性项目走向生产环境&#xff0c;测试团队面临一个尖锐的矛盾&#xff1a;模型迭代速度以天甚至小时计&#xff0c;而传统的人工评估与回归测试却需要数周。我们团队在将大…...

Arm嵌入式多线程编程:原理、实践与优化

1. Arm嵌入式开发中的多线程编程基础在嵌入式系统开发中&#xff0c;多线程编程是提高系统响应能力和资源利用率的重要手段。Arm架构作为嵌入式领域的主流处理器架构&#xff0c;其编译器工具链对多线程编程提供了完善的支持。不同于通用计算环境&#xff0c;嵌入式系统的多线程…...

动手写一个 JVM 调优学习项目:6 个真实场景带你掌握性能优化

动手写一个 JVM 调优学习项目&#xff1a;6 个真实场景带你掌握性能优化 项目地址: https://gitee.com/jiucenglou/jvm-tuning-lab 技术栈: Java 8 Maven 适合人群: Java 开发者、性能调优初学者、面试准备者 &#x1f914; 为什么写这个项目&#xff1f; 在实际开发和面试中…...