logon dialog 的弹出逻辑debug出来了,有很多有用的代码片段
Sent: Tuesday, 20 October, 2015 8:02 PM
這兩天在做UI端的performance優化,昨天Ross發現在My Opportunity Application初始化的時候,會發出一個額外odata call去獲取attachment數據:
但是這個odata call會返回一個空的response:
比較奇怪的是application的初始化并沒有執行任何跟attachment相關的代碼,唯一有可能的地方就是UI的定義,在初始化XML View的時候發出了odata請求:
把items的綁定從XML View移除,放到當用戶真正點擊attachment tab的時候再用javascript做綁定:
再測試,發現application初始化的時候返回空值的odata call不會出現了,但是在點擊attachment tab的時候,發出了兩次對attachment的請求:
其中第二條odata call就是之前初始化app時候發出的多余請求,說明框架內部對控件初次綁定的時候是需要請求數據的,于是debug了一下bindAggregation的實現:
在sap-ui-core.js中定義了一個私有的_bindAggregation方法:
在這個方法中,框架先從控件中獲取Model,根據已經綁定到控件的Data Model的類型決定Binding的類型,如果不存在Model,則默認用ODataListBinding:
上面返回空值的odata call就是a調用initialize()這一句發出的,如果控件沒有Model,這里的a就是一個ODataListBinding
再回過來看剛才還有一個odata call (network里面的第一條),獲取了attachment數據之后將數據set到控件的JSON Model里面:
于是將bind aggregation的邏輯移到這個odata call的回調里面做,這個時候控件已經綁定了JSON Model,所以determine出來的binding類型是JSONListBinding,就不會再發一次多余的odata call了。
總結:如果給UI5控件綁定數據的時候是自己寫邏輯用JSON Model的,要注意一下控件初始化還沒有數據的時候,有沒有額外的odata call,造成不必要的開銷。
查了一下UI5的API,好像沒找到UI5控件支持綁定了OData 之后,數據延遲加載的屬性……
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的logon dialog 的弹出逻辑debug出来了,有很多有用的代码片段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三国志战略版无当飞军怎么获得 阵容怎么搭
- 下一篇: Fiori GM4取metadata 从