UI5控件的生命周期是如何运作的?

2023-11-23

有人可以更详细地解释 UI5 控件默认事件的生命周期吗?我知道有文档中的此页面它概述了控件生命周期,但是,我认为它非常简短,需要更详细的内容。有人可以列出控件事件的顺序并解释每个事件的作用吗?


你是绝对正确的。控件生命周期的详细信息和实现细节很好地隐藏在文档中。我将尽力为您总结我迄今为止的理解。

Control的生命周期主要由以下因素决定:

  • init:你的小Control诞生了!函数在构造函数执行期间由框架调用。在这里做你的初始化工作。
  • 渲染前:在控件渲染开始之前由框架调用。每次(重新)渲染之前触发。
  • 渲染后:在控件渲染完成后由框架调用。每次(重新)渲染后触发。
  • exit:安息吧小控制!在销毁之前清理元素实例。由框架调用。把这里打扫干净吧。顺便说一句:如果您需要显式破坏控件/元素,您应该调用destroy而不是直接退出。

这是一个示例实现,其中包含不同钩子的一些示例用法:

sap.ui.core.Control.extend("a.sample.Control", {
  init : function() {
    // instantiate a sub-control
    this._btn = new sap.m.Button(); 
  },

  onBeforeRendering : function() {
    // deregister a listener via jQuery
    this.$("subelement").off("click", this.subElementClick);
  },

  onAfterRendering : function() {
    // register a listener via jQuery on a sub-element
    this.$("subelement").on("click", this.subElementClick);
  },

  subElementClick : function() {
    // do stuff
  },

  exit : function() {
    // clean up sub-controls and local references
    this._btn.destroy();
    delete this._btn;
  }

});

为什么我不应该在构造函数中执行初始化操作?

有一个基本的 UI5 构造函数管理对象。它为您“准备”您的 UI5 对象,然后调用您的 init 函数。这意味着在您的 init 中,所有设置都已为您应用,您可以像往常一样访问属性和聚合。

为什么我不应该调用重新渲染?

SAPUI5 渲染在某种意义上是智能的,它对排队重新渲染进行分组和优化。因此你永远不应该打电话rerender直接而是使用invalidate标记要重新渲染的控件。

HF

Chris

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UI5控件的生命周期是如何运作的? 的相关文章

随机推荐

  • 获取对象的实例名称,而不是 C# 4.0 中的对象类型名称

    假设这个类型 public class Car 我创建了一个实例 Car myCar new Car Target target new Target target Model myCar 这是另一种类型 public class Targ
  • C# python 实时进程间

    我正在开发一个项目 其中一个应用程序使用 C 编写 另一个应用程序使用 Python 编写 C 应用程序将持续分析数据流 并在每次检测到有趣的内容时发出一个标志 因此 每次发生事件时 我的 Python 应用程序都必须读取它并继续其自己的进
  • 包含 espresso-contrib:2.0 时出现 java.lang.InknownClassChangeError

    我有 android support v7 widget RecyclerView 的子类 当我使用该应用程序并进行测试时 它工作得很好 但是 当我在 gradle 应用程序文件中包含 espresso contrib 时 当我尝试运行相同
  • 自定义 Visual Studio MSIX 打包项目输出

    我正在使用 Visual Studio MSIX 打包项目在网络共享上为内部应用程序创建安装程序 一个问题是它正在创建一个末尾带有 Test 的目录 为什么会这样以及我该如何摆脱它 我只想要 MyApp MSIX 0 0 1 0 或者理想情
  • 在 matlab 中保存 imagesc 的精确图像输出

    你好 我想保存这张图片imagesc magic 3 确切的彩虹表示 可能吗 Thanks 这个问题可能看起来像重复的问题 但事实并非如此 我在这个网站上查看了类似问题的解决方案 但它并不令我满意 我查看了 Matlab 帮助中心 得到的最
  • android ffmpeg .so下载[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有人知道从哪里获得 Android 编译的 so FFMPEG 库吗 我尝试了数千次使用 Android NDK 在 windows 7 上手动编译
  • 接受 YouTube 的 cookie 同意

    我正在尝试从 Youtube 频道检索 Youtube 视频列表 例如 https www youtube com user YouTube videos 以获得第 n 个第一个视频 感谢key videoId 它曾经像魅力一样发挥作用 直
  • Oracle中的游标for循环

    请解释一下如何在 oracle 中使用游标 for 循环 如果我使用下一个代码 一切都很好 for rec in select id name from students loop do anything end loop 但是如果我为这个
  • 绘制一个奇特的对角相关矩阵,其系数位于上三角形中

    我有以下内容合成的数据框 包括数值 and 绝对的列以及label柱子 我想绘制一个对角相关矩阵并在上部显示相关系数 如下所示 预期产出 尽管合成数据集 数据帧中的分类列df需要转换成数值 到目前为止我已经用过这个海伯恩的例子 using
  • 如何以角度获取前一个日期?

    请帮我获取 Angular 4 中之前的日期 currentdate Date this currentdate new Date console log this datePipe transform this currentdate y
  • 如何在 OpenNLP 中训练命名实体识别器标识符?

    好的 我有以下代码来训练来自 OpenNLP 的 NER 标识符 FileReader fileReader new FileReader train txt ObjectStream fileStream new PlainTextByL
  • 子集的积和

    这个操作有名字吗 并且 是否存在封闭式表达式 对于给定的 n 个元素集合 k 值介于 1 和 n 之间 获取 k 个项目的所有子集 组合 求每个子集的乘积 求所有这些乘积的总和 我可以用 Python 表达这一点 并且很容易地进行计算 fr
  • 用非IO事件中断epoll_wait,没有信号

    当前场景是 epoll wait 超过几个 fd 和一个可能传入消息的队列 我希望 epoll wait 下面的循环在 IO 事件或新消息上执行 我知道的方法 Use a time毫秒超时并在循环中首先检查队列 Use the 自管技巧当消
  • 当兼容模式打开时,Font Awesome 4.2.0 无法在 IE11 中呈现

    Font Awesome 4 2 0 在 Chrome Firefox Safari Opera 和 Internet Explorer 11 中完美呈现 但仅限于 关闭 兼容模式 当兼容模式打开 打开 时 不会渲染任何字形图标 我尝试过使
  • 嵌套有序列表与数字、字母和罗马数字的组合进行编号?

    我想创建一个如下所示的有序列表 1 Item 1 2 Item 2 a Subitem 1 b Subitem 2 I Sub Subitem 1 II Sub Subitem 2 c Subtiem 3 3 Item 3 即子列表应使用字
  • 修改 Info.plist 以在运行时设置“Application is agent(UIElement)”

    假设我需要让用户能够通过首选项面板选择是否将该应用程序用作 标准 带有停靠图标和菜单 或作为代理应用程序 仅带有状态栏菜单 我想我需要在执行期间以编程方式修改应用程序的 Info plist 将参数 应用程序是代理 更改为是 否 这是正确的
  • 内核模块中的 EXPORT_SYMBOL | insmod 期间未定义的符号

    我有一个来自 a ko 内核模块 的导出函数 foo 和 foo1 foo1 接受输入参数 一个函数指针 我从 b ko 调用 foo1 并将 foo 作为输入参数传递 我看到 b ko 未知符号 foo 的 insmod 失败 即使 a
  • Java 11 HttpClient - HttpClient 与并发 HttpRequest 的最佳比率是多少

    在下面的示例中 我创建一个 Java 11 httpClient 然后创建多个并发 HttpRequest 这是不好的做法吗 每个 HttpRequest 都应该有自己的 HttpClient 吗 HttpClient 可以拥有的 Http
  • 使用 gsub 删除第一个数字字符之前的所有字符串

    使用 gsub 删除 R 中第一个空格之前的所有字符串 在此示例中 我们尝试删除空格之前的所有内容sub 1 D name 我正在寻找非常相似的东西 但我对正则表达式不太熟悉 我想删除第一个数字字符之前的所有内容 但不删除它 例如 x lt
  • UI5控件的生命周期是如何运作的?

    有人可以更详细地解释 UI5 控件默认事件的生命周期吗 我知道有文档中的此页面它概述了控件生命周期 但是 我认为它非常简短 需要更详细的内容 有人可以列出控件事件的顺序并解释每个事件的作用吗 你是绝对正确的 控件生命周期的详细信息和实现细节