SAP UI5 sap.ui.core.Element 的概要介
sap.ui.core.Element 是所有 SAP UI5 页面 Element(中文翻译为元素) 的基类。
Element 是 UI5 UI 最基本的构建块。 元素具有类似于 ManagedObject 的状态,它具有唯一的 ID,框架通过该 ID 记住它。 它可以有关联的 DOM,但它不能呈现自己。 只有 SAP UI5 Control 可以呈现自己,并负责呈现它们作为子元素聚合的元素。 如果一个元素已被渲染,它的相关 DOM 将获得与该元素相同的 ID,从而可以通过 API 检索。 当一个元素的状态改变时,它会通知它的父控件,它通常会重新渲染。
UI5 框架已经为常见的浏览器事件注册了通用侦听器,例如 click
或 keydown
.
调用时,通用侦听器(generic listeners)首先使用 jQuery.control
方法确定相应的目标元素。然后它检查元素是否具有事件的 event handler 方法。按照惯例,事件处理程序方法与事件同名,但以on
为前缀:例如方法 onclick 是单击事件的处理程序,方法 onkeydown 是 keydown 事件的处理程序,依此类推。
如果有这样的方法,它将以原始事件作为唯一参数来调用。如果元素有一个已注册的委托列表,则它们的处理函数将在存在的情况下以相同的方式调用。
元素和委托之间实现的处理程序集可能不同。并非由元素实现的每个处理程序都必须由其委托实现,并且委托可以实现相应元素未实现的处理程序。
可以在 module:sap/ui/events/ControlEvents
中找到以这种方式处理的浏览器事件列表。此外,框架使用相同的命名约定调度伪事件(模块:sap/ui/events/PseudoEvents)。最后需要强调的一点是,一些框架事件也以这种方式分派,例如BeforeRendering、AfterRendering(仅用于控件)和 ThemeChanged。
如果需要更多浏览器事件,控件可以在其 onAfterRendering 处理程序中使用本机 API 在 DOM 上注册侦听器。如果需要,他们也可以对其聚合元素执行此操作。如果事件可能经常触发(例如 mousemove),最好只在需要时注册它们,然后再取消注册。无论如何,必须在 onBeforeRendering 侦听器中以及在退出钩子中销毁之前清理任何已注册的侦听器,以防止内存泄漏。