微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 的解析:

原文地址:https://cloud.tencent.com/developer/article/2181291

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐