SAP学习笔记 - 开发31 - 前端Fiori开发 Device Adaptation(设备自适应)

上一章讲了Fiori开发中的 Responsiveness(响应式设计)。

SAP学习笔记 - 开发30 - 前端Fiori开发 Responsiveness(响应式设计)-CSDN博客

本章继续学习Fiori 开发中的知识。

目录

1,Device Adaptation(设备自适应)

1),HelloPanel.view.xml

2),Component.js

3),运行看效果

4),Detail.view.xml

5),Detail.controller.js 

6),运行看效果


下面是详细内容。

1,Device Adaptation(设备自适应)

SAPUI5 SDK - Demo Kit

先来看一下具体改了什么文件,达到了什么效果。 

简单来说就是实现折叠一部分组件,以节约空间。

1),HelloPanel.view.xml

<mvc:ViewcontrollerName="ui5.walkthrough.controller.HelloPanel"xmlns="sap.m"xmlns:mvc="sap.ui.core.mvc"><PanelheaderText="{i18n>helloPanelTitle}"class="sapUiResponsiveMargin"width="auto"expandable="{device>/system/phone}"expanded="{= !${device>/system/phone} }"><content><Buttonid="helloDialogButton"icon="sap-icon://world"text="{i18n>openDialogButtonText}"press=".onOpenDialog"class="sapUiSmallMarginEnd sapUiVisibleOnlyOnDesktop"/><Buttontext="{i18n>showHelloButtonText}"press=".onShowHello"class="myCustomButton"/><Inputvalue="{/recipient/name}"valueLiveUpdate="true"width="60%"/><FormattedTexthtmlText="Hello {/recipient/name}"class="sapUiSmallMargin sapThemeHighlight-asColor myCustomText"/></content></Panel>
</mvc:View>

在Panel 组件里面,用下面属性来启动自适应:

- expandable="{device>/system/phone}" =》在设备为 phone 的时候,会启用折叠
- expanded="{= !${device>/system/phone} }"> =》该状态指明该部分是否已经处于折叠状态

- sapUiVisibleOnlyOnDesktop =》该CSS 样式用于只显示于Desktop 模式下

2),Component.js

sap.ui.define(["sap/ui/core/UIComponent","sap/ui/model/json/JSONModel","sap/ui/Device"
], (UIComponent, JSONModel, Device) => {"use strict";return UIComponent.extend("ui5.walkthrough.Component", {metadata: {interfaces: ["sap.ui.core.IAsyncContentCreation"],manifest: "json"},init() {// call the init function of the parentUIComponent.prototype.init.apply(this, arguments);// set data modelconst oData = {recipient: {name: "World"}};const oModel = new JSONModel(oData);this.setModel(oModel);// set device modelconst oDeviceModel = new JSONModel(Device);oDeviceModel.setDefaultBindingMode("OneWay");this.setModel(oDeviceModel, "device");// create the views based on the url/hashthis.getRouter().initialize();}});
});

- 指定Device Model为单向模式(默认是双向绑定) 

const oDeviceModel = new JSONModel(Device);
oDeviceModel.setDefaultBindingMode("OneWay");
this.setModel(oDeviceModel, "device");

3),运行看效果

其实就是指定一部分对象作为折叠对象,然后引入Device模块,之后SAP Fiori就全帮你干了。

好像没啥变化哈~

因为这是Desktop 中显示,咱们给调成 phone 模式显示

按 F12,然后调成 phone 模式

这样就会显示折叠

点一下可以展开折叠或再次折叠 

上面在列表上搞了个折叠,当是phone模式的时候,会自适应为折叠。

下面看看在明细画面也做下优化。

4),Detail.view.xml

<mvc:ViewcontrollerName="ui5.walkthrough.controller.Detail"xmlns="sap.m"xmlns:core="sap.ui.core"xmlns:mvc="sap.ui.core.mvc"xmlns:wt="ui5.walkthrough.control"><Pagetitle="{i18n>detailPageTitle}"showNavButton="true"navButtonPress=".onNavBack"><ObjectHeadercore:require="{Date: 'sap/ui/model/type/Date',Currency: 'sap/ui/model/type/Currency'}"responsive="true"fullScreenOptimized="true"number="{parts: ['invoice>ExtendedPrice','view>/currency'],type: 'Currency',formatOptions: {showMeasure: false}}"numberUnit="{view>/currency}"intro="{invoice>ShipperName}"title="{invoice>ProductName}"><attributes><ObjectAttributetitle="{i18n>quantityTitle}"text="{invoice>Quantity}"/><ObjectAttributetitle="{i18n>dateTitle}"text="{path: 'invoice>ShippedDate',type: 'Date',formatOptions: {style: 'long',source: {pattern: 'yyyy-MM-ddTHH:mm:ss'}}}"/></attributes></ObjectHeader><wt:ProductRatingid="rating"class="sapUiSmallMarginBeginEnd"change=".onRatingChange"/></Page>
</mvc:View>

- 通过两句就是启动 ObjectHeader 组件的自适应模式

responsive="true"
fullScreenOptimized="true"

- 那么自适应对象是谁呢?就是这个 <attributes> 部分。

  和上面在 HelloPanel.view.xml 作用在 panel 组件上,用的是不同的属性。

<attributes>
    <ObjectAttribute
        title="{i18n>quantityTitle}"
        text="{invoice>Quantity}"/>
    <ObjectAttribute
        title="{i18n>dateTitle}"
        text="{
            path: 'invoice>ShippedDate',
            type: 'Date',
            formatOptions: {
                style: 'long',
                source: {
                    pattern: 'yyyy-MM-ddTHH:mm:ss'
                }
            }
        }"/>
</attributes>

5),Detail.controller.js 

sap.ui.define(["sap/ui/core/mvc/Controller","sap/ui/core/routing/History","sap/m/MessageToast","sap/ui/model/json/JSONModel"
], (Controller, History, MessageToast, JSONModel) => {"use strict";return Controller.extend("ui5.walkthrough.controller.Detail", {onInit() {const oViewModel = new JSONModel({currency: "EUR"});this.getView().setModel(oViewModel, "view");const oRouter = this.getOwnerComponent().getRouter();oRouter.getRoute("detail").attachPatternMatched(this.onObjectMatched, this);},…});
});

这里没啥,就是为了在详细页面加几个字段,比如这个Currency,所以加的Model而已

6),运行看效果

点任意一条明细,显示下面画面

哦,我这个用的Remote Data,Order Date 在Meta Data 里没暴漏出来。

我再加一个字段,然后再看看。

默认Destop Web 是这样的:有几个字段是靠右的

调成 phone 模式之后,就变成这样的

其实就是适应手机屏幕尺寸,把一些字段给调在下面表示了 

官方资料里提供的是这两种方式,在实际开发当中还是挺常用的。

其他的肯定还有,官方暂时没提供Sample,以后有Sample再说。

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

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

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

东京老树根-CSDN博客

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

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

相关文章

网络的那些事——初级——OSPF(2)

前面说了OSPF的状态机和一起简单的OSPF配合&#xff0c;接下这章继续写OSPFV2 IP frr和OSPFV3. 什么是OSPF IP FRR? OSPF IP FRR&#xff08;Fast Reroute&#xff09;利用全网链路状态数据库&#xff0c;预先计算出备份路径保存在转发表中&#xff0c;以备在故障时提供流量保…

C++(初阶)(二十一)——unordered_set和unordered_map

二十二&#xff0c;unordered_set和unordered_map的使用 1.unordered_set 1.1介绍 c11 template<class Key,class Hash std::hash<Key>,class KeyEqual std::equal_to<Key>,class Allocator std::allocator<Key> > class unordered_set;c17 na…

Java面试题:分布式ID时钟回拨怎么处理?序列号耗尽了怎么办?

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 有很多很多不足的地方&#xff0c;欢迎评论交流&#xff0c;感谢您的阅读和评论&#x1f604;。 目录 引言1 分布式ID2 问题2.1 时钟回拨2.1.1 毫秒级时…

影视剧学经典系列-梁祝-陶渊明《感士不遇赋并序》

1、背景 《感士不遇赋并序》是东晋诗人陶渊明创作的一篇抒发怀才不遇之慨的辞赋作品。受董仲舒《士不遇赋》和司马迁《悲士不遇赋》启发&#xff0c;陶渊明借古喻今&#xff0c;批判“真风告逝&#xff0c;大伪斯兴”的乱世。社会批判‌以“密网裁而鱼骇&#xff0c;宏罗制而鸟…

Spring Cloud Gateway 全面学习指南

Spring Cloud Gateway 全面学习指南 学习目录 第一部分&#xff1a;基础概念与核心架构 API网关概述与Spring Cloud Gateway简介Spring Cloud Gateway核心架构与工作原理Spring Cloud Gateway与Zuul的对比分析Spring Cloud Gateway核心组件详解 第二部分&#xff1a;基础配…

蛋白分析工具和数据库

UniProt&#xff08;Universal Protein Resource&#xff09;是一个综合性的蛋白质数据库&#xff0c;提供了全球范围内已知的蛋白质序列和功能信息。其中&#xff0c;UniProtKB&#xff08;UniProt Knowledgebase&#xff09;是最核心的组成部分&#xff0c;包含了经过注释和分…

Docker -- 快速入门

镜像与容器 当我们使用Docker安装应用时&#xff0c;Docker会自动搜索并下载应用镜像&#xff08;image&#xff09;。镜像不仅包含应用本身&#xff0c;还包含应用运行所需要的环境&#xff0c;配置、系统函数库。Docker会在运行镜像时创建一个隔离环境&#xff0c;称为容器&…

输入数量未知如何设置输入

在 C 的算法题中&#xff0c;如果你不知道输入数据有多少组&#xff08;即测试用例的数量未知&#xff09;&#xff0c;通常的处理方式是使用 循环读取输入直到文件结束 &#xff08;EOF&#xff09;。这类题目常见于在线评测系统&#xff08;如 LeetCode、牛客网、POJ 等&…

如何在Windows上使用qemu安装ubuntu24.04服务器?

2025年6月15日&#xff0c;周日晚上 在Windows上使用QEMU安装Ubuntu 24.04需要完成环境配置、镜像准备、虚拟机创建及系统安装等步骤。以下是综合多个搜索结果后的详细指南&#xff1a; 1. 安装QEMU环境 下载QEMU Windows版 从QEMU官网下载64位安装包&#xff08;如qemu-w64-s…

前端开发面试题总结-vue2框架篇(二)

Vue2高频问答 一、为什么 Vue 的 data 属性必须声明为返回一个初始数据的函数? 回答重点&#xff1a; Vue 的 data 属性声明成一个返回初始数据的函数&#xff0c;是为了确保每个组件实例都有独立的状态。通过这种方式&#xff0c;避免了组件使用相同的数据对象导致的状态共…

Web第二次方向考核复盘

一、简答题 1. &#xff08;1&#xff09;为什么要清除浮动&#xff1f; 答&#xff1a;当子元素浮动时会脱离文档流&#xff0c;父元素无法正确计算子元素高度导致高度、边框异常显示。同时会影响后续文档流布局。 <style>.box1 {border: solid 2px #000;}.child1 {fl…

Linux入门(十八)read函数

read 读取控制台输入 基本语法 read 选项 参数 选项 -p 指定读取值时的提示符 -t 指定读取值时等待的时间&#xff08;秒&#xff09;&#xff0c;如果没有在指定的时间内输入&#xff0c;就不再等待了 参数 变量&#xff1a;指定读取值的变量名 实例&#xff1a; 1、读取控制…

Python 文件操作详解

文章目录 Python 文件操作详解一、文件操作的基本流程二、文件打开模式详解1. 基本模式2. 扩展模式3. 模式组合示例 三、文件操作方法大全1. 打开和关闭文件2. 读取文件内容3. 写入文件内容4. 文件指针操作 四、文件编码处理五、二进制文件操作六、常见文件操作场景1. 文件内容…

用AI配合MCP快速生成n8n工作流

在数字化时代的浪潮中&#xff0c;AI技术正以前所未有的速度改变着我们的生活和工作方式。从智能家居到智能办公&#xff0c;从数据分析到自动化流程&#xff0c;AI的应用场景无处不在。今天&#xff0c;我们将带你走进一个充满创新与效率的世界&#xff0c;探索如何通过AI大眼…

ArkUI-X框架LogInterface使用指南

ArkUI-X框架支持日志拦截能力&#xff0c;Android侧提供原生接口&#xff0c;用于注入LogInterface接口&#xff0c;框架日志及ts日志通过该接口输出&#xff0c;本文的核心内容是介绍如何在Android平台上有效利用ArkUI-X框架的LogInterface拦截日志。 Android平台创建ArkUI-X…

函数重载与函数模板

函数重载与函数模板 函数重载 函数组成 返回类型 函数名称(参数列表){函数体}函数签名&#xff1a;函数名称(参数列表) C 允许定义同名函数&#xff0c;前提是它们具有不同的签名。这被称为函数重载 。 C 编译器通过检查调用中参数的数量、类型和顺序来选择要调用的适当函…

NLP学习路线图(四十六):可解释性

在自然语言处理(NLP)技术重塑人机交互、信息检索甚至司法决策的今天,一个尖锐的问题愈发凸显:当模型在文本分类中判定你的贷款申请被拒,或在简历筛选中将你排除,你是否有权追问一句——“为什么?” 一、黑箱迷雾:NLP模型的不透明困境 现代NLP的核心驱动力——深度神经…

uniapp的app项目,在华为pad上运行,页面显示异常

最开始为了好调试&#xff0c;运行成h5在浏览器调试的&#xff0c;调完以后&#xff0c;放到pad上。。。天塌了&#xff0c;所有页面异常&#xff0c;感觉被放大了好多&#xff0c;而且页面很乱。。。 查了很多资料&#xff0c;说把px改为rpx&#xff0c;好&#xff0c;全部改…

Linux中的连接符

Linux中的&&连接符 和其它语言类似&#xff0c;在Shell中&#xff0c;&&是一个逻辑运算符&#xff0c;表示逻辑AND&#xff0c;用于连接多个条件表达式 不同的是&#xff0c;在Linux系统中&#xff0c;&&不仅可以连接条件表达式&#xff0c;而且还能连…

装饰模式Decorator Pattern

模式定义 动态地给对象增加额外的职责 对象结构型模式 模式结构 Component&#xff1a;抽象构件 ConcreteComponent&#xff1a; 具体构件 Decorator&#xff1a;抽象装饰类 ConcreteDecorator&#xff1a; 具体装饰类 抽象装饰类代码 public class Decorator extends Compo…