前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP UI5框架中,onInit方法执行次数的讨论

SAP UI5框架中,onInit方法执行次数的讨论

作者头像
Jerry Wang
发布2019-05-31 15:32:21
5530
发布2019-05-31 15:32:21
举报

onInit只会被执行一次:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

_getViewWithGlobalId最后会调用onInit:

在这里插入图片描述
在这里插入图片描述

UI框架都是相通的,我们以前做的Web UI,onInit也只会执行一次,而DO_PREPARE_OUTPUT每次roundtrip都会被call到,相当于UI5的before/afterRendering.

在这里插入图片描述
在这里插入图片描述

ABAP webdynpro也是如此。

在这里插入图片描述
在这里插入图片描述

但我从未留意过框架的实现,其实也就是:onInit被method A 触发, onBefore/AfterRendering被method B触发,而method A在整个生命周期只会被call 一次,而method B会被重复call到。

The router will be initialized according to your components.js definition,it only returns the routing information which matches your url pattern.

在这里插入图片描述
在这里插入图片描述

简单看了下,以onInit为例,on能清晰地表明这是个event Handler,event name 为Init。有eventHandler就一定有event issuer, 我们不考虑有应用手动call onInit这种技术上可行,但没人这样做的错误做法。 在view执行完其pre-preocessor之后,框架就会fire一个afterInit的event,且这个event只会fire一次,所以event listener也就只会被call 一次。

至于controller的onInit是什么时候注册到view的init event上,这就是UI5的MVC design了,在241行。仔细看callstack。

有个问题,View的onBeforeRendering只会触发一次。这个可以任意找一个页面尝试。为什么View instance的onBeforeRendering只会执行一次? 1.当第一次进入View的时候,页面都会从最外层控件一直到最里面的子控件逐一render,在逐一render过程中,显示trigger了 onBeforeRendering

2.当在界面中切换detail page,只会partially update,此过程不再有调用onBeforeRendering

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年12月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档