iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >SAP Fiori里的List是怎么做到懒加载Lazy load的
  • 940
分享到

SAP Fiori里的List是怎么做到懒加载Lazy load的

2023-06-04 10:06:56 940人浏览 独家记忆
摘要

本篇内容主要讲解“SAP Fiori里的List是怎么做到懒加载Lazy load的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SAP Fiori里的List是怎么做到懒加载Lazy load

本篇内容主要讲解“SAP Fiori里的List是怎么做到懒加载Lazy load的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SAP Fiori里的List是怎么做到懒加载Lazy load的”吧!

问题:S/4HANA Fiori应用里的列表,一旦Scroll到底部就会自动向后台发起新的请求把更多的数据读取到前台显示。

以Product Master这个应用为例,我点击搜索之后,结果区域显示当前系统一共有140个product,但是只有前25个返回并显示在浏览器里。

SAP Fiori里的List是怎么做到懒加载Lazy load的

这个分页效果是UI5 OData的参数实现的:$skip=0&top=25。

而总数140,是通过参数$inlinecount实现,其原理和ABAP Open sql的SELECT COUNT(*)类似。

SAP Fiori里的List是怎么做到懒加载Lazy load的

从Chrome开发工具能观察到头25个product的payload:

SAP Fiori里的List是怎么做到懒加载Lazy load的

当将列表滚动至底部时,第二批共25个product从后台读取出来,显示在前台:

SAP Fiori里的List是怎么做到懒加载Lazy load的

这个Http请求的参数:$skip=25&top=25,用于读取从第25个到第50个product。

SAP Fiori里的List是怎么做到懒加载Lazy load的

从调用栈能清楚发现是scroll这个事件触发的第二批product的读取动作。

SAP Fiori里的List是怎么做到懒加载Lazy load的

然后再去GrowingEnablement.requestNewPage这一个调用栈,发现一个属性_iLimit维护了一个开始索引,每次scroll到底部的事件触发之后,该属性值都会被GrowingThreshold累加。 因为api this._oControl.getGrowingThreshold每次返回的是一个常量25, 因此_iLimit的值每次scroll到底部之后看起来是这样的:25,50,75,100 ... 这些值会被用来作为HTTP请求参数$skip的值传到后台:

SAP Fiori里的List是怎么做到懒加载Lazy load的

我同事的问题:growingThreshold在文件sap.m.ListBase.js里被硬编码成20, 但是运行时在何处被改写成了25?

SAP Fiori里的List是怎么做到懒加载Lazy load的

要回答这个问题,需要了解一些UI5 Smart Template的知识,因为例子里这个Product Master的Fiori应用,也是基于Smart Template开发的。可以参考我的博客My understanding about how object page in Smart Template is rendered 来了解其工作原理。

当Product Master这个应用的UI Component被加载并马上开始渲染时,需要先加载Smart Template的库文件:

SAP Fiori里的List是怎么做到懒加载Lazy load的

在我博客My understanding about how object page in Smart Template is rendered 提到,ListReport.view.xml这个文件里有若干view fragment的声明,每个声明指向了一些其他的Smart Template库文件。

这些库文件一览:

SAP Fiori里的List是怎么做到懒加载Lazy load的

在Chrome开发者工具查看从ABAP后台加载的库文件SmartTable.fragment.xml,能发现属性growingThreshold在此处被硬编码成25。

SAP Fiori里的List是怎么做到懒加载Lazy load的

当SmartTable.fragment.xml被加载之后其内容会被解析, growingThreshold值为25,会通过控件的setter API写入到控件属性里。这样接下来在处理列表的scroll事件是,25这个值就会通过控件的getter API返回并累加到_iLimit上。

SAP Fiori里的List是怎么做到懒加载Lazy load的

关于XML view从ABAP后台加载到浏览器后是如何被解析并生成对应的UI5控件,可以参考我的博客Why my fORMatter does not work? A trouble shooting example to know how it works

也许您按照我上面描述的步骤操作,但是无法触发断点。原因是因为UI5框架针对基于Smart Template开发的Fiori应用的XML view设计了一套缓存机制。当待渲染的XML view已经在缓存中存在时,不会去ABAP后台加载Smart Template的库文件, 而是直接执行第428行的IF分支。

SAP Fiori里的List是怎么做到懒加载Lazy load的

通过调试我们可以发现缓存是通过IndexedDB加上LRU(Least recently used)算法实现的。

SAP Fiori里的List是怎么做到懒加载Lazy load的

通过Chrome开发者工具可以观察到待渲染的view已经有记录存储在IndexedDB里了:

SAP Fiori里的List是怎么做到懒加载Lazy load的

如果想观察Smart Template库文件的加载,需点击"Delete database"以手动清除缓存。

SAP Fiori里的List是怎么做到懒加载Lazy load的

缓存清除完毕后,即可观察到期望中的Smart Template库文件加载。

SAP Fiori里的List是怎么做到懒加载Lazy load的

到此,相信大家对“SAP Fiori里的List是怎么做到懒加载Lazy load的”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: SAP Fiori里的List是怎么做到懒加载Lazy load的

本文链接: https://www.lsjlt.com/news/237405.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SAP Fiori里的List是怎么做到懒加载Lazy load的
    本篇内容主要讲解“SAP Fiori里的List是怎么做到懒加载Lazy load的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SAP Fiori里的List是怎么做到懒加载Lazy load...
    99+
    2023-06-04
  • SAP CRM和Hybris Commerce的懒加载机制是什么
    本篇内容介绍了“SAP CRM和Hybris Commerce的懒加载机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在WebUI里...
    99+
    2023-06-04
  • 怎么如何让SAP S/4HANA的Material Fiori应用配置到Fiori Launchpad里
    怎么如何让SAP S/4HANA的Material Fiori应用配置到Fiori Launchpad里,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。UXT/9...
    99+
    2023-06-04
  • 怎么把SAP UI5应用部署到SAP云平台的Fiori Launchpad里去
    怎么把SAP UI5应用部署到SAP云平台的Fiori Launchpad里去,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。(1) 首先在WebIDE里把开发好...
    99+
    2023-06-04
  • SAP附件UI里选择的文件是怎么传到ABAP服务器的
    本篇内容主要讲解“SAP附件UI里选择的文件是怎么传到ABAP服务器的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SAP附件UI里选择的文件是怎么传到ABAP服务器的”吧!使用Chrome d...
    99+
    2023-06-04
  • 阿里云加盟代理怎么做的呢赚钱是真的吗
    简介 近年来,阿里云作为国内领先的云计算服务提供商,吸引了众多投资者的目光。阿里云加盟代理成为了许多人关注的焦点。然而,对于许多人来说,阿里云加盟代理是否真的赚钱仍然是个疑问。本文将探讨阿里云加盟代理的真相,以及如何在其中实现赚钱。阿里云加...
    99+
    2024-01-16
    阿里 怎么做 加盟代理
  • SAP SD怎么将其它ITEM加入到一个已创建好的交货单里
    本篇内容主要讲解“SAP SD怎么将其它ITEM加入到一个已创建好的交货单里”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SAP SD怎么将其它ITEM加入到一个已创建好的交货单里”吧!如下的销...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作