从控制器自定义UI时Odata响应缓慢

2020-08-20 03:27发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我的应用有这种奇怪的行为,这是解释:

我正在使用个人版WebIDE,从中我要连接到本地网关系统,现在当我调用Odata并将其直接绑定到视图中的列表或表时,它会立即加载,但是如果我绑定list或 从我的控制器动态创建表格,最多需要2-5秒钟来加载列表。

在将列表绑定到UI之前,我需要对其进行操作。 所以我的问题是:这是正常行为吗? 如果是这样,那么如何使UI加载更快。

我做错什么了吗?

数据完美加载,这是我关注的响应时间。 请建议。

致谢

Rakesh

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我的应用有这种奇怪的行为,这是解释:

我正在使用个人版WebIDE,从中我要连接到本地网关系统,现在当我调用Odata并将其直接绑定到视图中的列表或表时,它会立即加载,但是如果我绑定list或 从我的控制器动态创建表格,最多需要2-5秒钟来加载列表。

在将列表绑定到UI之前,我需要对其进行操作。 所以我的问题是:这是正常行为吗? 如果是这样,那么如何使UI加载更快。

我做错什么了吗?

数据完美加载,这是我关注的响应时间。 请建议。

致谢

Rakesh

付费偷看设置
发送
8条回答
hengyuye
1楼 · 2020-08-20 03:59.采纳回答

发生这种情况可能有多种原因。 您提供的信息越多(尤其是最少的代码),我们就可以更好地找出原因。 根据您共享的代码,我假设:

  1. 该应用程序正在使用不推荐使用的ODataModel。 它已经自2015年以来已废弃。 请改用 v2.ODataModel 。 后者在默认情况下在性能方面有许多改进,并且还在模型中缓存了所有请求的数据。
  2. 该模型正在通过同步XHR请求整个" MaterialListSet"(异步:false)。 请避免这样做,因为它会导致主线程在等待响应时完全冻结。 Sync XHR已所有主要浏览器都已弃用 由于对UX的负面影响。 在视图中绑定列表时,相应的ListBinding异步发送请求。 但是,在控制器中,您已主动禁用它。

______________

解决了上述问题后,您可以通过

    进一步改善列表
  • 启用"增长"
  • 最小化响应大小 通过在绑定信息中指定" $ select"。

仅加载用户真正需要的内容。

Nan4612
2楼-- · 2020-08-20 04:16

Hello Nabheet,

我不确定您的预处理意味着什么。

我观察了网络轨迹并看到了3-4秒的差异,然后我从读取路径中移除了过滤器,然后这个时间减少到将近2秒。 这是我的init控制器代码:

 var oModel = this.getOwnerComponent()。getModel();
 var MaterialTypeJson = {
 MaterialTypeData:[]
 };
 var oModelMaterialTypeJson = this.getOwnerComponent()。getModel(" MaterialTypeJsonModel");
 var path ="/img/MaterialListSet";
 oModel.read(path,{
 异步:错误,
 成功:function(oData){
 MaterialTypeJson.MaterialTypeData.push(oData);
 oModelMaterialTypeJson.setData(MaterialTypeJson);

 } .bind(this),
 错误:function(err){

 } .bind(this)
 });

 var List = this.byId(" __ list0");
 List.bindItems({
                 路径:" MaterialTypeJsonModel>/MaterialTypeData/0/results",
                 模板:新sap.m.StandardListItem({
                     标题:" {MaterialTypeJsonModel> Mtart}",
                     描述:" {MaterialTypeJsonModel> Mtbez}",
                     类型:"导航"
                 })
             });
 

我正在创建一个json,将数据添加到json,然后将json绑定到UI。

请发表评论。

致谢

Rakesh

太Q了
3楼-- · 2020-08-20 04:10

您只是比较"网络"标签中的odata调用吗?

在后一种情况下,您正在编写jsonmodel,当然, 要显示的数据。

南山jay
4楼-- · 2020-08-20 03:59

>我需要在将列表绑定到UI之前对其进行操作。

您能否详细说明哪种类型? 需要的操纵? 另外,应用运行的目标UI5版本是什么?

小熊yu生菜
5楼-- · 2020-08-20 04:08

>我应该始终保持异步:true ??

如果模型是 是sap.ui.model.odata.v2.ODataModel,所有操作(包括读取)始终处于异步状态。 无法(不鼓励)通过同步XHR与v2.ODataModel发送请求。

> 它会导致DOM结构的加载并等待可能令人困惑的数据

在这种情况下,UI5提供了繁忙指示器。 将请求控件的繁忙状态设置为true,然后在请求的成功处理程序中将其再次设置为false。

 list.setBusy(true | false); 

繁忙指示器的默认延迟和建议延迟为1000毫秒。

SAP浪
6楼-- · 2020-08-20 04:13

Hello Boghyon,

记录未按预期在UI上显示,因此我必须给前缀加上后缀或添加2个不同的单元格数据。

截至目前,App的运行版本为1.28,将很快升级到最新版本。

Rakesh

compass1988
7楼-- · 2020-08-20 03:59

Rakesh只是为了处理Async而已,这是处理JS东西时的一种方式。 如前所述,不建议使用同步! 您可以显示有关以下内容的消息Toas t 一样。

一周热门 更多>