SAPUI5基础知识21 - 碎片回调函数(Fragments Callbacks)

news2024/9/20 15:05:25

1. 背景

在上一篇博客中,我们通过创建fragment的方式,实现了一个可以复用的对话框,并将其集成在我们的应用程序中。

在本篇博客中,让我们进一步增强一下这个程序,为弹出的对话框添加一个按钮,以实现对话框的关闭。

2. 练习

2.1 创建关闭对话框的事件响应程序

首先,为关闭对话框的事件,在控制器HelloPanel.controller.js文件中创建事件处理程序函数onCloseDialg,它使用byId函数获取对话框的实例,并使用close函数来关闭对话框。

在这里插入图片描述

改动后的HelloPanle.controller.js文件内容如下:

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/m/MessageToast"
], function (Controller, MessageToast) {
    "use strict";

    return Controller.extend("zsapui5.test.controller.HelloPanel", {
        onShowHello: function () {
            // read msg from i18n model
            const oBundle = this.getView().getModel("i18n").getResourceBundle();
            const sRecipient = this.getView().getModel().getProperty("/recipient/name");
            const sMsg = oBundle.getText("helloMsg", [sRecipient]);

            // show message
            MessageToast.show(sMsg);
        },

        onOpenDialog: function () {
            // create dialog lazily 
            if (!this.pDialog) {
                this.pDialog = this.loadFragment({
                    name: "zsapui5.test.view.HelloDialog"
                });
            }
                this.pDialog.then(function (oDialog) {
                    oDialog.open();
                });
        },

        onCloseDialog: function () {
            //note: we don't need to chain to the pDialog promise, since this event handler 
            // is only called form within the loaded dialog itself.
            this.byId("helloDialog").close();
        }

    });
});

2.2 添加关闭按钮

接下来,让我们在fragment的定义中,添加一个按钮,用于关闭对话框。

打开HelloDialog.fragment.xml文件,在对话框<Dialog>控件的<beginButton>聚合中,添加<Button>控件,并指定控件的press事件的处理程序为onCloseDialog

fragment中定义的内容,会通过 loadFragment 函数加载出来;加载完毕后,当用户点击fragment中定义的对话框中包含的<Button>控件后,控件的事件处理程序onCloseDialog会被触发。

在这里插入图片描述

注:对话框控件有一个名为 beginButton 的聚合以及 endButton的聚合。在这两个聚合中放置按钮会确保将beginButton 中包含的按钮放在 endButton中包含按钮的前面。
但需要了解的是,有关before的具体含义,将会取决于当前语言的文本方向。因此,这里SAPUI5使用术语是beginend,而非leftright。因为,在从左到右方向的语言中,beginButton 将向左渲染;若在从右到左模式下,渲染的顺序则会相反。

改动后HelloDialog.fragment.xml文件内容如下:

<core:FragmentDefinition
    xmlns="sap.m"
    xmlns:core="sap.ui.core"
>
    <Dialog
        id="helloDialog"
        title="Hello {/recipient/name}"
    >
        <beginButton>
            <Button
                text="{i18n>dialogCloseButtonText}"
                press=".onCloseDialog"
            />
        </beginButton>
    </Dialog>
</core:FragmentDefinition>

2.3 增强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

2.4 运行程序

让我们运行一下改动后的程序,效果如下:
在这里插入图片描述

点击SayHelloWithDialog按钮会,会在弹出的窗口中显示Hello World,并且在弹出窗口中有一个新的OK的按钮,点击OK按钮后,会关闭对话框。

3. 小结

本文介绍了SAPUI5中Fragment的用法,并通过一个示例展示了如何加载Fragment,如何为Fragment中的事件定义处理函数。

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

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

相关文章

使用eclipse在新建的java项目中编辑xml文件时Unhandled event loop exception No more handles

处理方法&#xff1a;更换xml编辑器 Window ——》Preferences ——》General ——》Editors ——》File Associations 如果File types里面没有*.xml&#xff0c;则点击Add进行新增 选中*.xml&#xff0c;然后在Associated editors 选中想用的编辑器&#xff0c;设置为defaul…

pandas安装以及导入CSV

安装pandas pip install pandas速度慢可以切换国内镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas执行导入csv操作 import pandas as pd# 读取csv文件 data pd.read_csv(yourPath)输入data查看数据 导入成功&#xff01;

【Redis 初阶】初识 Redis

一、了解 Redis Redis 官网&#xff1a;Redis - The Real-time Data Platform Redis 是一种基于键值对&#xff08;key-value&#xff09;的 NoSQL 数据库。与很多键值对数据库不同的是&#xff0c;Redis 中的 key 都是 string&#xff08;字符串&#xff09;&#xff0c;值&a…

手写模拟Spring底层原理-简易实现版

通过手写模拟Spring 了解Spring的底层源码启动过程了解BeanDefinition、BeanPostProcessor的概念了解Spring解析配置类等底层源码工作流程了解依赖注入&#xff0c;Aware回调等底层源码工作流程了解Spring AOP的底层源码工作流程 这里实现一个简化版的 Spring 框架的核心功能&a…

2024源代码加密软件评测丨五款企业源代码加密软件推荐

“李明&#xff0c;最近黑客攻击事件频发&#xff0c;咱们的代码库安全真的让人捏把汗啊。”张伟眉头紧锁&#xff0c;语气中带着几分忧虑。 “是啊&#xff0c;我听说现在市面上有不少源代码加密软件&#xff0c;但种类繁多&#xff0c;不知道该选哪个好。”李明回应道&#…

cocos creator 3学习记录01——如何替换图片

一、动态加载本地图片 1、通过将图片关联到CCClass属性上来进行代码切换。 1、这种方法&#xff0c;需要提前在脚本文件中声明好代表图片的CCClass属性。 2、然后拖动图片资源&#xff0c;到脚本内声明好的属性上以进行关联。 3、然后通过程序&#xff0c;来进行切换展示。…

Python | TypeError: ‘module’ object is not callable

Python | TypeError: ‘module’ object is not callable 在Python编程中&#xff0c;遇到“TypeError: ‘module’ object is not callable”这类错误通常表明你尝试像函数一样调用了一个模块。这种错误通常是由于导入模块时的疏忽或误解导致的。本文将深入探讨此错误的根源&…

JVM—HotSpot虚拟机对象探秘

1、对象的创建 对象只是普通对象&#xff0c;不包括数组和Class对象 类加载检查&#xff1a;当虚拟机遇到字节码New指令时&#xff0c;先检查这个指令的参数是否可以在常量池定位到一个类的符号引用&#xff0c;并且加载这个符号引用代表的类是否被加载、解析、验证、初始化过。…

【Redis】Redis的概念 | 特性 | 应用场景 | 安装 | 客户端

文章目录 Redis一、认识Redis二、Redis的特性三、Redis的应用场景四、安装Redis五、Redis的客户端 Redis 一、认识Redis Redis是一个开源的&#xff0c;在内存中存储数据。在分布式系统中更有优势。如果是单机环境下&#xff0c;直接通过变量存储数据比用Redis更有优势。在分布…

通信系统的均衡技术

1、摘要 在通信系统中&#xff0c;信号从发送端发出&#xff0c;经过信道&#xff0c;到达接收端&#xff0c;而在传输的过程中&#xff0c;信号会发生失真&#xff0c;产生失真的原因有很多&#xff0c;包括阻抗不匹配&#xff0c;干扰等。为了优化信号质量&#xff0c;需要进…

推动智慧交通建设,边缘计算赋能交通信号灯数据处理与决策能力

随着智慧城市建设的快速发展&#xff0c;智慧交通已成为城市发展的重要组成项目。智慧交通旨在通过大数据、人工智能、物联网等先进技术&#xff0c;实现交通系统的全面感知、智能分析、主动服务和协同管理。边缘计算在交通信号灯物联网应用中展现了交通信号灯数据处理与决策能…

C# 设计倒计时器、串口助手开发

文章目录 1. 实现一个简单的倒计时器开始、暂停2. 串口助手开发 1. 实现一个简单的倒计时器开始、暂停 namespace Timer {public partial class Form1 : Form{int count;//用于定时器计数int time;//存储设定的定时值bool parse false;//控制暂停计时public Form1(){Initiali…

Apollo使用(1):介绍、QuickStart

一、Apollo应用 1、介绍 项目地址&#xff1a;https://github.com/ctripcorp/apollo使用手册&#xff1a;https://github.com/ctripcorp/apollo/wiki Apollo&#xff08;阿波罗&#xff09;是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集…

Python如何快速定位最慢的代码?优雅了~

编写Python代码时&#xff0c;我们常常会遇到性能瓶颈&#xff0c;这不仅影响程序的执行效率&#xff0c;还可能导致用户体验下降。那么&#xff0c;如何快速定位代码中最慢的部分&#xff0c;成为每个开发者必须掌握的技能。 如何快速定位 Python 代码中的性能瓶颈&#xff1…

优雅单片机之STM32C8T6------蓝牙模块基本设置(2)

0&#xff0c;C8T6系列 1&#xff0c;入门之程序的下载 2&#xff0c;蓝牙模块基本设置&#xff08;本文&#xff09; 2&#xff0c;蓝牙模块基本应用 3&#xff0c;蓝牙小车&#xff08;待定&#xff09; 一&#xff0c;蓝牙模块基础设置 需要硬件&#xff1a;电脑&#x…

【Linux】进程间通信(2):命名管道

目录 一、命名管道的概念 二、命名管道与匿名管道的区别 1、常规区别 2、读写阻塞的区别 3、存储位置和数据处理的区别 匿名管道 命名管道 三、命名管道的创建与使用 1、在命令行中命名管道的创建与使用 2、在编程中命名管道的创建与使用 2、示例代码 四、命名管道的…

实验2-3-6 计算分段函数[3]

#include<stdio.h> #include<math.h> int main(){double x;scanf("%lf",&x);if (x10)printf("f(%.1f)%.1f",x,1/x);elseprintf("f(%.1f)%.1f",x,x);}

【CSS】css 如何实现固定宽高比

今天和同事讨论这个问题&#xff0c;一时间还想不到了&#xff0c;于是学习了下&#xff0c;就顺便当个记录吧 要在CSS中实现固定宽高比&#xff0c;有两种主要的方法可以选择。一种是使用新的aspect-ratio属性&#xff0c;另一种是利用padding技巧。随着现代浏览器对aspect-ra…

27、美国国家冰雪中心(NSIDC)海冰密集度月数据下载与处理

文章目录 一、前言二、数据下载三、使用Ponply查看数据结构四、代码一、前言 处理美国国家冰雪中心(NSIDC)的海冰密集度月度数据时,坐标转换是一个重要的步骤。NSIDC提供的数据通常采用极地球面坐标系,需要将其转换为常用的地理坐标系(如经纬度)以便进行分析和可视化。 坐…

【数据结构与算法】共享双向链表

共享双向链表 一.共享双向链表的引入二.共享双向链表的原理三.共享双向链表的结构四.共享双向链表的初始化五.共享双向链表插入六.共享链表遍历数据七.共享链表的销毁八.总结 一.共享双向链表的引入 当我们使用双向链表其数据域是固定的类型,如果我需要另外一种类型的话,就需要…