SAP UI5 control focus related research
- 2019 年 10 月 6 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://jerry.blog.csdn.net/article/details/101018471
Sent: Wednesday, 11 May, 2016 11:49 AM
在PC上,點了live search的search field後, 也經歷了key down->key press->send http request to backend->key up
我比較感興趣的是這個Store focus information,裡面直接指向我們S2的HeaderFooterHelper,正好是出問題的search field所在。
solution
是aggregationBinding的位置不對,不應該在onInit中而應該放在routeMatched中做該操作。
重新梳理下這個問題:
這個失去焦點的問題出現根本原因是search input被觸發了blur事件,從而失去了焦點,而blur事件的觸發禍首是defineMasterHeaderFooter方法被框架call到了,下圖很清楚的說明了這個問題。

接下來藉助截圖說明為什麼Leads中defineMasterHeaderFooter會被框架調用到,而Contacts沒有呢?
在MasterHeaderFooter被創建(app init)出來的時候,框架會判斷在那個時間節點master list是否存在綁定了,如果有的話,會在binding對象上掛一個監聽change事件的event handler,也就是這個event handler觸發了defineMasterHeadrFooter方法被又一次調用。

解決方案就是照著BP的改,把bindAggregation的動作放到routeMatched裡面去