SAP UI5 ManagedObject 的 Event 讲解以及 SAP UI5 XML 视图里控件 press 的解析逻辑

托管事件提供了一种将重要状态更改传达给任意数量的 感兴趣的 侦听器的方法。 事件有一个名称和(可选)一组参数。 对于每个事件,都会有添加或删除事件侦听器的方法以及触发事件的方法。

例如,名为“change”的事件的 attachChange、detachChange、fireChange.

如下图所示:

有关托管事件的声明、描述事件的元数据以及自动生成的用于访问它的方法集的详细信息,可以在扩展方法的文档中找到。

克隆 ManagedObject 时,为克隆源中的任何事件注册的所有侦听器也将注册到克隆。 以后的更改不会反映在任何方向(从源到克隆,反之亦然)。

ManagedObject 的原型提供了几个通用的低级 API 来管理属性、聚合、关联和事件。 这些泛型方法仅用于实现管理单个托管属性等的更高级别的非泛型方法(例如,为属性“大小”设置新值的函数 setSize(value))。 sap.ui.base.ManagedObject.extend 为所有托管方面创建那些更高级别 API 的默认实现。 然后子类的实现可以用更具体的实现覆盖那些默认实现,例如 在设置或检索特定属性时实现副作用。 因此,重要的是要了解通用的低级方法不适合对托管对象的状态进行通用访问,因为这会绕过覆盖的高级方法及其副作用。

SAP UI5 控件 Events 的一个例子:

托管对象一些常用的 event

  • formatError:当应该从模型传播绑定属性的新值,但格式化该值失败并出现异常时触发。此事件使控制层次结构冒泡。
  • modelContextChange:在此对象上更改模型或上下文时触发,例如通过调用 setModel/setBindingContext 或通过传播(propagation)触发。

SAP UI5 XML 视图里控件 press 绑定的事件函数名称是如何被解析的

能够顺利解析出来:

首先创建一个 view 控件:

然后创建一个 button 实例:

从 metadata 里获取 button 应该具有的所有属性:

我就想知道这个 press 属性的赋值逻辑是什么时候发生的?

这个特殊的函数名称比较有用:

有用的调用栈:

逐一变量 XML 视图里每个节点的属性:

只有 text 和 press 两个属性:

knownSettings 里将 press 属性的类型定义为 5,意思是 event:

event handler resolver 是一个单独的文件:EventHandlerResolver.js

关于从 XML 视图里提取事件处理函数的上下文(context)处理

a.onXX 如何解析?

Configuration.getControllerCodeDeactivated 是什么鬼?

什么是 Design mode?

解析引用:

上下文就是控制器:

采用 . 作为字段名称,包含本地 controller 引用。

默认从 windows 全局对象读取:

直接从 window 全局对象里提取:

index.js 的执行时间点,晚于 XML view 的解析:

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...