logon dialog 的弹出逻辑debug出来了,有很多有用的代码片段

简介: Sent: Tuesday, 20 October, 2015 8:02 PM

Sent: Tuesday, 20 October, 2015 8:02 PM

这两天在做UI端的performance优化,昨天Ross发现在My Opportunity Application初始化的时候,会发出一个额外odata call去获取attachment数据:

image.png

但是这个odata call会返回一个空的response:

image.png


比较奇怪的是application的初始化并没有执行任何跟attachment相关的代码,唯一有可能的地方就是UI的定义,在初始化XML View的时候发出了odata请求:

image.png

把items的绑定从XML View移除,放到当用户真正点击attachment tab的时候再用javascript做绑定:

image.png


再测试,发现application初始化的时候返回空值的odata call不会出现了,但是在点击attachment tab的时候,发出了两次对attachment的请求:

image.png

其中第二条odata call就是之前初始化app时候发出的多余请求,说明框架内部对控件初次绑定的时候是需要请求数据的,于是debug了一下bindAggregation的实现:


在sap-ui-core.js中定义了一个私有的_bindAggregation方法:

image.png

在这个方法中,框架先从控件中获取Model,根据已经绑定到控件的Data Model的类型决定Binding的类型,如果不存在Model,则默认用ODataListBinding:

image.png

上面返回空值的odata call就是a调用initialize()这一句发出的,如果控件没有Model,这里的a就是一个ODataListBinding


再回过来看刚才还有一个odata call (network里面的第一条),获取了attachment数据之后将数据set到控件的JSON Model里面:

image.png

于是将bind aggregation的逻辑移到这个odata call的回调里面做,这个时候控件已经绑定了JSON Model,所以determine出来的binding类型是JSONListBinding,就不会再发一次多余的odata call了。


总结:如果给UI5控件绑定数据的时候是自己写逻辑用JSON Model的,要注意一下控件初始化还没有数据的时候,有没有额外的odata call,造成不必要的开销。

查了一下UI5的API,好像没找到UI5控件支持绑定了OData 之后,数据延迟加载的属性……


相关文章
|
2月前
MessageBox 弹框 全局方法$msgbox, $alert, $confirm 和 $prompt常用代码片段
MessageBox 弹框 全局方法$msgbox, $alert, $confirm 和 $prompt常用代码片段
|
10月前
Orbeon form PE 版本 dmv-14 点击 save 按钮之后的执行逻辑
Orbeon form PE 版本 dmv-14 点击 save 按钮之后的执行逻辑
|
JavaScript 前端开发 Python
【PyAutoGUI操作指南】04 消息框功能+Question+Waring+Critical+自定义消息框
【PyAutoGUI操作指南】04 消息框功能+Question+Waring+Critical+自定义消息框
121 0
|
JSON 编译器 Go
VS CODE一些常见配置操作(快捷键设置、C/C++的debug、代码路径配置)
VS CODE一些常见配置操作(快捷键设置、C/C++的debug、代码路径配置)
591 1
VS CODE一些常见配置操作(快捷键设置、C/C++的debug、代码路径配置)
|
iOS开发
iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
123 0
|
存储 Python
Python 自动化-pywinauto库print_control_identifiers()方法打印内容显示不全解决办法,cmd展示更多内容设置方法
Python 自动化-pywinauto库print_control_identifiers()方法打印内容显示不全解决办法,cmd展示更多内容设置方法
825 0
Python 自动化-pywinauto库print_control_identifiers()方法打印内容显示不全解决办法,cmd展示更多内容设置方法
SAP ABAP编辑器里的Code Completion(代码自动完成)的等待时间设置
SAP ABAP编辑器里的Code Completion(代码自动完成)的等待时间设置
222 0
SAP ABAP编辑器里的Code Completion(代码自动完成)的等待时间设置
|
SQL 缓存 监控
ABAP Code Inspector那些隐藏的功能,您都知道吗?
ABAP Code Inspector那些隐藏的功能,您都知道吗?
156 0
ABAP Code Inspector那些隐藏的功能,您都知道吗?