头图

下面是一个例子:

语义是,complex Parser 功能,只能在 1.26 及其之后的版本使用:

if ( config["bindingSyntax"] === "default" ) {
                config["bindingSyntax"] = (config.getCompatibilityVersion("sapCoreBindingSyntax").compareTo("1.26") < 0) ? "simple" : "complex";
            }

版本号是 1.26:

解析出主版本号为1,次版本号为 26:

当前次版本号是 110:

当前 SAP UI5 版本的次版本号是怎么求出来的?

SAP UI5 默认的 jQuery 版本是 3.6.0,如果不是这个版本,在 console 会打印警告消息。

Add all defined events to the event infrastructure

jQuery has inversed the order of event registration when multiple events are passed into jQuery.on method from version 1.9.1.

UIArea binds to both touchstart and saptouchstart event and saptouchstart internally also binds to touchstart event.

Before jQuery version 1.9.1, the touchstart event handler is called before the saptouchstart event handler and our flags (e.g. _sapui_handledByUIArea) still work. However since the order of event registration is inversed from jQuery version 1.9.1, the saptouchstart event handler is called before the touchstart one, our flags don't work anymore.

Therefore jQuery version needs to be checked in order to decide the event order in ControlEvents.events.

将所有定义的事件添加到事件基础结构

从 1.9.1 版本开始,当多个事件被传递到 jQuery.on 方法时,jQuery 已经颠倒了事件注册的顺序。

UIArea 绑定到 touchstart 和 saptouchstart 事件,saptouchstart 在内部也绑定到 touchstart 事件。

在 jQuery 版本 1.9.1 之前,touchstart 事件处理程序在 saptouchstart 事件处理程序之前被调用,我们的标志(例如 _sapui_handledByUIArea)仍然有效。 然而,由于事件注册的顺序与 jQuery 1.9.1 版相反,saptouchstart 事件处理程序在 touchstart 事件处理程序之前被调用,我们的标志不再起作用。

因此需要检查 jQuery 版本以确定 ControlEvents.events 中的事件顺序。

这就是上图代码检查的用途所在。
默认的 compatVersion 值为 edge

默认的 SAP UI5 base version 为 1.14:

每个版本的 SAP UI5 SDK 文件,在 configuration.js 文件里硬编码了当前版本:

即在调试模式下 Technical Information Dialog 对话框里看到的:


注销
1k 声望1.6k 粉丝

invalid