如何在Sync中使OData v2读取方法调用?

2020-09-10 08:15发布

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

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


大家好,

我正在研究sapui5应用程序。 这是我的情况。 我需要通过应用过滤器来读取EntitySet方法。

 setupJsonModel:函数(oModel,aFilter){
 var oJsonModel = new JSONModel(); //本地json模型初始化

 oModel.read("/img/EntitySet",{
 过滤器:aTplnrFilter,
 成功:函数(oEvent){
 var aList = [];
 $ .each(oEvent.results,function(data,item){


 aTPlaceList.push({
 "密钥":item.Key,
 "名称":item.Name

 });  。
 });
 var jsonModel = new JSONModel({
 " ResultSet":aList//将aList数组推入JSON模型
 });
 var tData = jsonModel.getData();
 oJsonModel.setData(tData);


 MessageToast.show("成功");
 },
 错误:函数(oError){
 jQuery.sap.log.info(" PlantSet出现错误失败" + oError);
 MessageToast.show(" Error");
 }
 });
 返回oJsonModel;
 },

 var oJsonModel = this.setupTplaceModel(oDataModel,aFilter);//返回空模型
 

我将EntitySet复制到JsonModel中,然后继续进行操作。

当我逐步调试时,它会在第一次时跳过成功和错误块。 它是从这个方法的方块出来的。

所以我的oJsonModel为空。 但是经过一段时间的延迟后,它进入了成功调用,并将值返回给oJsonModel。

我知道Odata V2默认为异步模式。 惠普避免这种情况吗?

谢谢

此致

JK。

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

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


大家好,

我正在研究sapui5应用程序。 这是我的情况。 我需要通过应用过滤器来读取EntitySet方法。

 setupJsonModel:函数(oModel,aFilter){
 var oJsonModel = new JSONModel(); //本地json模型初始化

 oModel.read("/img/EntitySet",{
 过滤器:aTplnrFilter,
 成功:函数(oEvent){
 var aList = [];
 $ .each(oEvent.results,function(data,item){


 aTPlaceList.push({
 "密钥":item.Key,
 "名称":item.Name

 });  。
 });
 var jsonModel = new JSONModel({
 " ResultSet":aList//将aList数组推入JSON模型
 });
 var tData = jsonModel.getData();
 oJsonModel.setData(tData);


 MessageToast.show("成功");
 },
 错误:函数(oError){
 jQuery.sap.log.info(" PlantSet出现错误失败" + oError);
 MessageToast.show(" Error");
 }
 });
 返回oJsonModel;
 },

 var oJsonModel = this.setupTplaceModel(oDataModel,aFilter);//返回空模型
 

我将EntitySet复制到JsonModel中,然后继续进行操作。

当我逐步调试时,它会在第一次时跳过成功和错误块。 它是从这个方法的方块出来的。

所以我的oJsonModel为空。 但是经过一段时间的延迟后,它进入了成功调用,并将值返回给oJsonModel。

我知道Odata V2默认为异步模式。 惠普避免这种情况吗?

谢谢

此致

JK。

付费偷看设置
发送
7条回答
灬番茄
1楼 · 2020-09-10 09:00.采纳回答

您好 Jayakrishnan Chandramohan

像其他人一样,您最好与 标准。

您可以简单地在成功处理程序中编写代码(无论在read调用之后编写什么内容)。 在呼叫已读呼叫之前,在对话框或视图上放置一个忙碌指示器。 然后在成功和错误处理程序功能上,删除繁忙指示器。

BR,

Mahesh

Nan4612
2楼-- · 2020-09-10 08:51

很抱歉,这确实违反了准则和最佳实践。

  1. 永远不要尝试通过XHR同步发送请求。 相反,尝试使用事件处理程序和Promise。
  2. 通常,没有充分的理由将整个EntitySet复制到JSONModel中。 JSONModel是一种客户端模型,旨在提供仅与客户端相关的信息(例如设备信息)。 客户端必须进一步处理OData集合,这表明数据模型的设计选择不佳。
槿木_熙
3楼-- · 2020-09-10 08:51

难道您不可以成功地编写代码吗?

# p#

实际上,这是针对某些自定义需求方案的,我需要将我的输入数据与OData模型进行比较。 我有价值帮助真实的多输入控件。 当用户单击值帮助时,它将打开"选择对话框"片段。 我用选择对话框(带有多选择标准列表)加载了我的OData EntitySet。 我想从EntitySet中获取数据列表以比较我的输入数据。 但我没有得到它。 因此,我试图在运行时将EntitySet值获取为JSON模型。

所以我的读取代码将是oModel.read("/img/Entityset",{success,error})。

在此read语句之后,它不会成功,在这里我得到结果。它在响应到来之后执行成功功能。 我在读取方法之后编写了以下代码。

 var aTplaces = oView.getModel(" oJsonModel")。getProperty("/img/EntitySet");
 for(var类型= 0;类型 

我的aTplaces.length失败的地方,因为它是空的。 仅引发此错误后,将调用我的Odata读取成功方法。

希望你很清楚吗?

clasier
4楼-- · 2020-09-10 08:55

由于我在代码中修改了一些逻辑,因此我正在关闭此问题。 因此,我不会更改标准的OData调用。

SAP砖家
5楼-- · 2020-09-10 08:48

是的,我在考虑其他选择,以避免将OData集合复制到JSON中。 但是在我的需求中,我需要这个。 请参考以下问题。

https://answers.sap.com/questions/12652335/how-to-de-select-the-select-dialog-values-from-mul.html

My梦
6楼-- · 2020-09-10 08:56
< p>是的,我这样做。 现在我有点改变了逻辑和方法调用。 谢谢您的建议。

软件心理学工程师
7楼-- · 2020-09-10 08:38

我正在考虑这一点,逻辑非常复杂,我需要正确处理。

一周热门 更多>