【SAP UI5 控件学习】DAY04 Input组Part IV 完结List组Part I

1.时间选择器Time Picker

和Data Picker类似,Time Picker允许用户选择相应的时间。
在这里插入图片描述
它有以下一些比较常用的属性。

  • value用于显示Input中的时间的值,这个属性只能接受字符串的值,如果是UI5.getInstance()获取到的时间,需要转化成相应的字符串才可以
  • valueFormat用于设置显示日期的格式,这个格式会影响Input框中的格式,也会影响Time Picker显示的格式
  • placeholder用于显示提示信息
  • maskMode这个通常设置为true,这样用户就只能在输入框中输入指定格式的时间,如果输入字母等其他字符,是不可以输入进去的。

关于valueFormat的格式

  • HH24小时制的小时
  • hh12小时制的小时
  • mm分钟
  • ss
  • a12小时制的情况下使用,用于显示上午还是下午

相关事件change
当用户选择了日期后,会触发这个事件,可以在这个事件中获取到用户选择的事件

handleChange: function (oEvent) {var sValue = oEvent.getParameter("value"),MessageToast.show("The selected time is  " + sValue);
}

具体代码如下:

<mvc:ViewcontrollerName="sap.ui5.walkthrough.controller.App"xmlns:core="sap.ui.core"xmlns:mvc="sap.ui.core.mvc"xmlns:form="sap.ui.layout.form"xmlns="sap.m"xmlns:l="sap.ui.layout"
><Panelwidth="auto"class="sapUiResponsiveMargin"><headerToolbar><OverflowToolbar><Title text="maskMode"/></OverflowToolbar></headerToolbar><content><HBox alignItems="Center"><TextrenderWhitespace="true"text="maskMode is  "/><Switch state="{/maskMode/state}"/><TextrenderWhitespace="true"text="  for all TimePickers below"/></HBox><Textclass="sapUiSmallMarginTop"visible="{/maskMode/state}"text="When maskMode is 'On', the TimePicker field accepts only the time format predefined by the mask."/><Textclass="sapUiSmallMarginTop"visible="{= !${/maskMode/state}}"text="When maskMode is 'Off', the users can enter anything in the TimePicker field. The field is still validated. The 'change' event returns two parameters - 'value' (that is entered) and 'valid' (true or false depending on the validity of the 'value')."/></content></Panel><VBox class="sapUiSmallMargin"><Labelclass="sapUiSmallMarginTop"text="{/timePickers/TP1/format}"/><TimePickerid="TP1"value="{/timePickers/TP1/value}"valueFormat="{/timePickers/TP1/format}"displayFormat="{/timePickers/TP1/format}"change="handleChange"maskMode="{= ${/maskMode/state} ? 'On' : 'Off'}"placeholder="{/timePickers/TP1/placeholder}"/><Labelclass="sapUiSmallMarginTop"text="{/timePickers/TP2/format}, showCurrentTimeButton: {/timePickers/TP2/showCurrentTimeButton}"/><TimePickerid="TP2"valueFormat="{/timePickers/TP2/format}"displayFormat="{/timePickers/TP2/format}"showCurrentTimeButton="true"change="handleChange"maskMode="{= ${/maskMode/state} ? 'On' : 'Off'}"placeholder="{/timePickers/TP2/placeholder}"/><Labelclass="sapUiSmallMarginTop"text="hh:mm a,value: {/timePickers/TP3/value}"/><TimePickerid="TP3"change="handleChange"value="{/timePickers/TP3/value}"maskMode="{= ${/maskMode/state} ? 'On' : 'Off'}"placeholder="{/timePickers/TP3/placeholder}"/><Labelclass="sapUiSmallMarginTop"text="{/timePickers/TP4/format}"/><TimePickerid="TP4"valueFormat="{/timePickers/TP4/format}"displayFormat="{/timePickers/TP4/format}"change="handleChange"maskMode="{= ${/maskMode/state} ? 'On' : 'Off'}"placeholder="{/timePickers/TP4/placeholder}"/><Labelclass="sapUiSmallMarginTop"text="{/timePickers/TP5/format}, initialFocusedDateValue: {/timePickers/TP5/initialFocusedDateValue}"/><TimePickerid="TP5"valueFormat="{/timePickers/TP5/format}"displayFormat="{/timePickers/TP5/format}"change="handleChange"initialFocusedDateValue="{/timePickers/TP5/initialFocusedDateValue}"maskMode="{= ${/maskMode/state} ? 'On' : 'Off'}"placeholder="{/timePickers/TP5/placeholder}"/><Labelclass="sapUiSmallMarginTop"text="{/timePickers/TP6/format}, support2400: {/timePickers/TP6/support2400} (for cases where 24:00:00 indicates the end of the day)"/><TimePickerid="TP6"valueFormat="{/timePickers/TP6/format}"displayFormat="{/timePickers/TP6/format}"change="handleChange"support2400="{/timePickers/TP6/support2400}"maskMode="{= ${/maskMode/state} ? 'On' : 'Off'}"value="{/timePickers/TP6/value}"placeholder="{/timePickers/TP6/placeholder}"/><Toolbar class="sapUiSmallMarginTop"><content><Title text="change event result"/></content></Toolbar><Textid="T1"class="sapUiSmallMarginTop"/></VBox>
</mvc:View>

值得注意的两个细节

1. TP3的value为什么需要使用格式化器?

根据提供的代码和JSON Model,Id为TP3的元素的value属性为UI5Date.getInstance(),这里使用的是一个UI5的日期实例。然而,UI5的日期实例并不能直接在界面上显示,因为它不是一个可显示的字符串。

要在界面上显示日期值,需要将日期实例转换为字符串格式,以便TimePicker能够正确显示。你可以使用格式化器(Formatter)或者绑定到另一个字符串属性来实现。

使用格式化器的示例:
在控制器中定义一个格式化函数:

formatDate: function(value) {if (value instanceof Date) {var oDateFormat = sap.ui.core.format.DateFormat.getDateTimeInstance({ pattern: "yyyy-MM-dd" });return oDateFormat.format(value);}return value;
}

然后在XML视图中的TimePicker控件中使用格式化器:

<TimePickerid="TP3"change="handleChange"value="{path: '/timePickers/TP3/value',formatter: '.formatDate'}"maskMode="{= ${/maskMode/state} ? 'On' : 'Off'}"placeholder="{/timePickers/TP3/placeholder}"
/>

这样可以将日期实例转换为指定格式的字符串,并显示在界面上。

另一种方法是在JSON Model中添加一个新的属性,用于存储日期的字符串格式。在更新日期时,同时更新这个字符串属性,并绑定到TimePicker的value属性。

希望这能帮到你解决问题。如果还有其他疑问,请随时提问。

2. 那TP5对应的VALUE也是UI5Date.getInstance(),为什么不需要格式化器

TP5对应的VALUE也是UI5Date.getInstance(2017, 8, 9, 10, 11, 12),在这种情况下不需要使用格式化器的原因是因为TP5指定了initialFocusedDateValue属性,该属性接受一个UI5日期实例作为初始值,并且TimePicker控件会自动将其转换为正确的显示格式。

initialFocusedDateValue属性用于在打开TimePicker时设置初始的选定日期和时间。UI5会自动将UI5日期实例转换为适当的显示格式,并在TimePicker控件中显示。

因此,对于TP5,你无需使用格式化器,因为TimePicker会自动处理日期实例的显示。

希望这解答了你的疑问。如果还有其他问题,请随时提问。

2.Action List控件

Action List控件可以用于显示一系列的按钮操作聚合在一起,方便用户选择和使用。
在这里插入图片描述
具体代码如下:

<mvc:ViewcontrollerName="sap.ui5.walkthrough.controller.App"xmlns:core="sap.ui.core"xmlns:mvc="sap.ui.core.mvc"xmlns:form="sap.ui.layout.form"xmlns="sap.m"xmlns:l="sap.ui.layout"
><Buttontext="Open Action Sheet"class="sapUiSmallMargin"press=".onButtonPress"ariaHasPopup="Menu" ><dependents><core:FragmentfragmentName="sap.ui5.walkthrough.view.ValueHelpDialog"type="XML" /></dependents></Button>
</mvc:View>
<ActionSheet id="actionSheet"xmlns="sap.m"xmlns:core="sap.ui.core"core:require="{ MessageToast: 'sap/m/MessageToast' }"title="Choose Your Action"showCancelButton="true"placement="Bottom"showScrollbar="false"><Buttontext="Accept"icon="sap-icon://accept"press="handleButtonPress" /><Buttontext="Reject"icon="sap-icon://decline"press="handleButtonPress" /><Buttontext="Email"icon="sap-icon://email"press="handleButtonPress" /><Buttontext="Forward"icon="sap-icon://forward"press="handleButtonPress" /><Buttontext="Delete"icon="sap-icon://delete"press="handleButtonPress" /><Buttontext="Other"press="handleButtonPress" />
</ActionSheet>
sap.ui.define(['sap/ui/core/mvc/Controller','sap/ui/model/json/JSONModel',"sap/ui/core/Core","sap/ui/core/library","sap/ui/unified/DateTypeRange","sap/ui/core/date/UI5Date",'sap/m/MessageToast',"sap/ui/core/Fragment","sap/ui/model/Filter","sap/ui/model/FilterOperator",
], function (Controller,JSONModel,Core,library,DateTypeRange,UI5Date,MessageToast,Fragment,Filter,FilterOperator,) {"use strict";return Controller.extend("sap.ui5.walkthrough.controller.App", {onButtonPress: function(oEvent) {var oButton = oEvent.getSource();this.byId("actionSheet").openBy(oButton);},handleButtonPress: function(oEvent) {var oButton = oEvent.getSource();var sButtonText = oButton.getText();MessageToast.show('Selected action is ' + sButtonText);}});
});

3.NavigationList控件

这个控件用于实现导航栏,还提供了各种特效。
在这里插入图片描述
在这里插入图片描述
具体代码如下:

<mvc:ViewcontrollerName="sap.ui5.walkthrough.controller.App"xmlns="sap.m"xmlns:mvc="sap.ui.core.mvc"xmlns:tnt="sap.tnt"height="100%"
><OverflowToolbar><Buttontext="Toggle Collapse/Expand"icon="sap-icon://menu2"press=".onCollapseExpandPress"/><Buttontext="Show/Hide SubItem 3"icon="sap-icon://menu2"press=".onHideShowSubItemPress"/></OverflowToolbar><tnt:NavigationListid="navigationList"width="320px"selectedKey="subItem3"><tnt:NavigationListItemtext="Item 1"key="rootItem1"icon="sap-icon://employee"><tnt:NavigationListItem text="Sub Item 1" select="onPress"/><tnt:NavigationListItem text="Sub Item 2" /><tnt:NavigationListItemtext="Sub Item 3"id="subItemThree"key="subItem3"/><tnt:NavigationListItem text="Sub Item 4"/><tnt:NavigationListItemtext="Invisible Sub Item 5"visible="false"/><tnt:NavigationListItemtext="Invisible Sub Item 6"visible="false"/></tnt:NavigationListItem><tnt:NavigationListItemtext="Invisible Section"icon="sap-icon://employee"visible="false"><tnt:NavigationListItem text="Sub Item 1"/><tnt:NavigationListItem text="Sub Item 2"/><tnt:NavigationListItem text="Sub Item 3"/><tnt:NavigationListItem text="Sub Item 4"/></tnt:NavigationListItem><tnt:NavigationListItemtext="Item 2"icon="sap-icon://building"><tnt:NavigationListItem text="Sub Item 1"/><tnt:NavigationListItem text="Sub Item 2"/><tnt:NavigationListItem text="Sub Item 3"/><tnt:NavigationListItem text="Sub Item 4"/></tnt:NavigationListItem></tnt:NavigationList>
</mvc:View>

如果想实现点击某一个Item会执行某一个事件,请使用select事件
例如

<tnt:NavigationListItem text="Sub Item 1" select="onPress"/>
sap.ui.define(['sap/ui/core/mvc/Controller','sap/ui/model/json/JSONModel',"sap/ui/core/Core","sap/ui/core/library","sap/ui/unified/DateTypeRange","sap/ui/core/date/UI5Date",'sap/m/MessageToast',"sap/ui/core/Fragment","sap/ui/model/Filter","sap/ui/model/FilterOperator",
], function (Controller,JSONModel,Core,library,DateTypeRange,UI5Date,MessageToast,Fragment,Filter,FilterOperator,
) {"use strict";return Controller.extend("sap.ui5.walkthrough.controller.App", {onCollapseExpandPress: function () {var oNavigationList = this.byId("navigationList");// 获取导航栏是否是Expand,然后取反即可var bExpanded = oNavigationList.getExpanded();oNavigationList.setExpanded(!bExpanded);},onHideShowSubItemPress: function () {var oNavListItem = this.byId("subItemThree");oNavListItem.setVisible(!oNavListItem.getVisible());},onPress: function (oEvent) {var text = oEvent.getSource().getText();MessageToast.show(text + " is selected");}});
});

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

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

相关文章

Linux文件系统概述

本文已收录至《Linux知识与编程》专栏&#xff01; 作者&#xff1a;ARMCSKGT 演示环境&#xff1a;CentOS 7 文件系统概述 前言正文文件与磁盘磁盘介绍与机械硬盘机械硬盘基础结构机械硬盘数据存储与管理 文件操作的细节创建文件访问文件删除文件恢复文件其他情况 最后 前言 …

力扣 279. 完全平方数

一、题目描述 给你一个整数 n&#xff0c;返回和为 n 的完全平方数的最少数量 。 完全平方数是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 …

哪款蓝牙耳机通话清楚,几款拥有通话降噪技术的骨传导耳机分享

嘿&#xff0c;你是音乐爱好者吗&#xff1f;还是热衷于锻炼身体&#xff1f;那么你一定不能错过骨传导耳机&#xff01;这种神奇的耳机通过骨头的振动来传递声音&#xff0c;绝不同于传统的耳道或鼓膜传播方式。你可保持对周围环境的警觉&#xff0c;同时避免对你的听力造成任…

使用chatgpt过funcaptcha验证码3个人学习记录

funcaptcha 验证码3 通过记录 往期验证码&#xff1a;http://t.csdn.cn/ulgXY funcaptcha1 往期验证码&#xff1a;http://t.csdn.cn/3xMnZ funcaptcha2 funcaptcha 那个公司开发的简要介绍&#xff1a; Funcaptcha是由hCaptcha公司开发的一种人机验证系统。hCaptcha是一家位…

Golang学习之结构体和内存对齐、map设计思路

Golang学习之结构体和内存对齐、map设计思路 结构体和内存对齐内存对齐如何确定一个结构体的对其边界 map设计思路哈希表与扩容bmap的结构练习map扩容规则 结构体和内存对齐 cpu要想从内存读取数据&#xff0c;需要通过地址总线&#xff0c;把地址传输给内存&#xff0c;内存准…

从技术出发or从场景出发:大模型开始“路线分化”?

文 | 智能相对论 作者 | 叶远风 大模型时代&#xff0c;厂商们狂奔突袭&#xff0c;技术创新一浪高过一浪。 在这个过程中&#xff0c;先赶上风口做出一个大模型产品&#xff0c;宣传一波、站稳脚跟&#xff0c;再慢慢谈场景应用、价值落地&#xff0c;是很多厂商的做法——…

Qt对地震数据(文件格式*.Segd)实现将时域数据转频域数据

文件格式以segd为例&#xff0c;其他地震文件格式同理。 时域数据 时域数据通俗点讲就是我在某个时间段记录的一个值&#xff0c;然后经过一段时间后&#xff0c;产生的一组数据就是时域数据。 频域数据 频域数据是指信号在频率域上的表示&#xff0c;即信号的频率特性。频…

【Zookeeper】

目录 一、Zookeeper 概述1、Zookeeper 定义2、Zookeeper 工作机制3、Zookeeper 特点4、Zookeeper 数据结构5、Zookeeper 应用场景6、Zookeeper 选举机制 二、部署 Zookeeper 集群1.安装前准备1、关闭防火墙2、安装 JDK3、下载安装包 2.安装 Zookeeper1、修改配置文件2、拷贝配置…

前端(六)——TypeScript在前端中的重要性与应用

&#x1f60a;博主&#xff1a;小猫娃来啦 &#x1f60a;文章核心&#xff1a;TypeScript在前端中的重要性与应用 文章目录 什么是TypeScript&#xff1f;TypeScript与JavaScript的关系如何使用TypeScriptTypeScript在前端开发中的应用场景提升开发效率减少错误和调试时间优化…

“百模大战”愈演愈烈,AI大模型的现状与发展

最近&#xff0c;随着 OpenAI 发布的以用户为中心的聊天机器人 ChatGPT 的发布&#xff0c;大型语言模型 (LLM) 引起了人们的关注。大模型的好坏与否&#xff0c;主要涉及三个方面&#xff1a;算法、算力和数据。算法决定了其本身的学习能力&#xff0c;算力则影响着算法的学习…

基于微信小程序的英语单词记忆系统的设计与实现(论文+源码)_kaic

摘 要 当前时期&#xff0c;国内的经济获得了非常快速的发展&#xff0c;互联网技术在持续的创新和完善&#xff0c;教育教学方面也在不断的进步&#xff0c;教育全面深化改革在发展&#xff0c;并且移动互联网技术在教育领域获得了大量的实践以及应用。语言的全球化慢慢的变…

golang macaron静态资源访问配置

1、本地文件目录如下&#xff1a; 2、macaron配置 package mainimport ("log""net/http""gopkg.in/macaron.v1" )func myHandler(ctx *macaron.Context) string {return "the request path is: " ctx.Req.RequestURI }func main() …