资讯专栏INFORMATION COLUMN

SAP UI5和CRM WebUI的View和Controller是如何绑定的

ISherry / 3060人阅读

摘要:和的绑定是通过这个方法完成的实例也通过工厂模式创建一旦执行之后,和的关联关系就建立起来了。最后运行时的实例和之前我们在的的构造函数中的指针一样,证明两个变量指向的是同一个实例。

UI5

例如我在UI5的界面上画一个按钮,点击之后弹出一个Alert dialog。

在XML view里只定义了controller的名称和事件处理函数的名称。那么按钮被点击之后,controller的onShowHello被触发。但是,这个controller的实例是什么时候被创建, 并且关联到这个申明它的XML view里呢?

在XMLView.js里,我定义的XML view的源代码被加载之后,XMLView会调用XMLTemplateProcessor, 解析XML view的内容,根据里面的control申明创建对应的UI5控件实例。下图的变量_xContent.innerHTML即为上图XML view的源代码。

XMLView的实例通过工厂模式创建之后,XMLView源代码里定义的controller名称sap.ui.demo.walkthrough.controller.App,会赋到oView实例的字段_controllerName上。

View和Controller的绑定是通过这个方法createAndConnectController完成:

connect controller to view after controller and control tree are fully initialized

Controller的实例也通过工厂模式创建:


一旦connectToView执行之后,

oView和oController的关联关系就建立起来了。

CRM WebClient UI

每个UI component view里有一个built-in的属性controller, 指向这个view对应的controller实例。

在BSP的编程环境里,开发人员根本无需操心这个controller实例的初始化,直接用就行。

那么View的controller实例究竟在什么时候被框架初始化的?

要自己搞清楚这个问题,可以随便找个BSP UI component做个实验。我找的是PRDHS。在其View的controller CL_PRDHS_HEADER_IMPL的构造函数里设置断点:

打开该view,从调用栈上下文即可得知BSP框架在什么地方初始化controller实例的。记下这个实例在ABAP runtime的地址编号4633:

同UI5逻辑类似,在CL_BSP_PAGE_BASE~CREATE_PAGE内部,第190行创建controller的实例并将其同View实例建立关联关系。

最后运行时View的controller实例4633和之前我们在PRDHS/Header的controller CL_PRDHS_HEADER_IMPL的构造函数中的me指针4633一样,证明两个变量指向的是同一个实例。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68947.html

相关文章

  • SAP UI5CRM WebUIViewController如何绑定

    摘要:和的绑定是通过这个方法完成的实例也通过工厂模式创建一旦执行之后,和的关联关系就建立起来了。最后运行时的实例和之前我们在的的构造函数中的指针一样,证明两个变量指向的是同一个实例。 UI5 例如我在UI5的界面上画一个按钮,点击之后弹出一个Alert dialog。showImg(https://segmentfault.com/img/remote/1460000014204282); ...

    Taonce 评论0 收藏0
  • SAP UI5CRM WebUIViewController如何绑定

    摘要:和的绑定是通过这个方法完成的实例也通过工厂模式创建一旦执行之后,和的关联关系就建立起来了。最后运行时的实例和之前我们在的的构造函数中的指针一样,证明两个变量指向的是同一个实例。 UI5 例如我在UI5的界面上画一个按钮,点击之后弹出一个Alert dialog。showImg(https://segmentfault.com/img/remote/1460000014204282); ...

    fantix 评论0 收藏0
  • SAP S4CRMC4C技术比较

    摘要:在以下简称和以下简称开发团队都工作过,这篇文章给出这两款产品一些技术层面的比较。标准开发方式和的虽然看起来都是风格,但实现技术不同。而的标准则是基于和协作而成的。 如果您对SAP S/4HANA for Customer Management(以下简称S4CRM)和SAP Cloud for Customer(以下简称C4C)不甚熟悉,那我建议您可以先浏览我之前写的这两篇微信公众号文章...

    xi4oh4o 评论0 收藏0
  • SAP S4CRMC4C技术比较

    摘要:在以下简称和以下简称开发团队都工作过,这篇文章给出这两款产品一些技术层面的比较。标准开发方式和的虽然看起来都是风格,但实现技术不同。而的标准则是基于和协作而成的。 如果您对SAP S/4HANA for Customer Management(以下简称S4CRM)和SAP Cloud for Customer(以下简称C4C)不甚熟悉,那我建议您可以先浏览我之前写的这两篇微信公众号文章...

    littleGrow 评论0 收藏0

发表评论

0条评论

ISherry

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<