control focus related research

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到了,下图很清楚的说明了这个问题。
control focus related research
接下来借助截图说明为什么Leads中defineMasterHeaderFooter会被框架调用到,而Contacts没有呢?

在MasterHeaderFooter被创建(app init)出来的时候,框架会判断在那个时间节点master list是否存在绑定了,如果有的话,会在binding对象上挂一个监听change事件的event handler,也就是这个event handler触发了defineMasterHeadrFooter方法被又一次调用。
control focus related research
解决方案就是照着BP的改,把bindAggregation的动作放到routeMatched里面去