有无if条件语句时,web组件的onControllerAttached ,onLoadIntercept,onFoucus关键事件调用逻辑的顺序原理?

使用web组件直接加载web页面时,通过if条件语句来控制web组件的显示与隐藏的时机。发现添加了if条件语句后,onControllerAttached ,onLoadIntercept,onFoucus这几个事件触发时机与预期理解不一致。

阅读 317
1 个回答

if条件的有无,导致了这三个事件触发顺序的错乱:onControllerAttached —》onLoadIntercept----》onFoucus

直接创建和通过if else创建web的这两个生命周期顺序不同,onControllerAttached,onLoadIntercept这两个生命周期是web的。

如果是正常加载无if条件语句控制,onControllerAttached是先于onLoadIntercept调用的。但被if条件控制后,在if语句条件为false时,web组件会被销毁掉,在if条件切换到true时重新初始化web组件并绑定到初始化生成的webController上。此时的调用逻辑为:获取焦点-\> 加载URL -\> 重新生成web组件并绑定到最初的的webController上。如果伙伴的需要通过if条件语句来控制web组件的显示与隐藏的时机,建议使用visibility属性来进行控制是否隐藏。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进