如何重置延迟的odata请求

2020-09-19 16:13发布

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

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


我正在使用v2 odata模型推迟删除请求:

 this._oModel.setDeferredGroups([" TechObjDelete"]);
 this._oModel.remove("/img/TechnicalObjectSet(EquipmentNo ='" + oItem.EquipmentNo +"',Job ='" + oItem.Job +"')",{
 groupId:" TechObjDelete",
 changeSetId:oItem.EquipmentNo,
 成功:function(oData){
 },
 错误:function(oError){
 }
 }); 

并希望在用户单击"保存"按钮时进行删除。 所以在保存时我打电话:

 this._oModel.submitChanges(); 

一切正常。 问题是当用户没有单击"保存"按钮而是移至另一个屏幕时。 然后,我想重置模型中的延迟更改。

我可以通过初始化以下属性来做到这一点,因为它存储了延迟的请求:

 this._oModel.mDeferredRequests = {}; 

但是,这正在访问模型的私有属性。 有更好的方法重置它吗?

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

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


我正在使用v2 odata模型推迟删除请求:

 this._oModel.setDeferredGroups([" TechObjDelete"]);
 this._oModel.remove("/img/TechnicalObjectSet(EquipmentNo ='" + oItem.EquipmentNo +"',Job ='" + oItem.Job +"')",{
 groupId:" TechObjDelete",
 changeSetId:oItem.EquipmentNo,
 成功:function(oData){
 },
 错误:function(oError){
 }
 }); 

并希望在用户单击"保存"按钮时进行删除。 所以在保存时我打电话:

 this._oModel.submitChanges(); 

一切正常。 问题是当用户没有单击"保存"按钮而是移至另一个屏幕时。 然后,我想重置模型中的延迟更改。

我可以通过初始化以下属性来做到这一点,因为它存储了延迟的请求:

 this._oModel.mDeferredRequests = {}; 

但是,这正在访问模型的私有属性。 有更好的方法重置它吗?

付费偷看设置
发送
3条回答
My梦
1楼-- · 2020-09-19 16:52

拉德克,你好

您可以使用" resetChanges"功能。 就您而言,这就像

 this._oModel.resetChanges(); 

这将重置模型中所有待处理的更改。 无论如何,..如果您要检查挂起的请求是否在更改组中,您想要重置,则可以采用这种方式。

如果(this._oModel.hasPendingChanges()){
   var mChanges = this._oModel.getPendingChanges();
  
  
   对于(var i in mChanges){
    //如果更改的路径在您的更改组中,请进行一些验证

     如果(b删除){
       this._oModel.resetChanges(mChanges [i]
     }
   }
 } 

希望这会有所帮助。 有关更多信息,请参见 resetChanges 。 :)

此致

Sascha

路亽曱_Ryan
2楼-- · 2020-09-19 16:37

我遇到了确切的问题,正在寻找解决方案。

huskylover
3楼-- · 2020-09-19 16:54

您好Radek,

我有相同的查询,UI5的同事帮助解决了它。 因此,有两种方法可以删除/删除延迟的呼叫。

1。 通过调用模型的destroy()方法。 销毁模型后,所有待处理的请求都将中止。

 this._oModel.destroy(); 

2。 通过调用在每个操作的返回对象中可用的abort()方法,例如创建读取删除更新 callFunction submitChanges

如果您检查上述每种方法的文档,就会发现它们返回一个对象,并且该对象的说明如下:"具有 abort 函数的对象可以中止当前请求 。"

 var oCreateRequest = this._oModel.create("/img/MyEntitySet",myObj);
 oCreateRequest.abort();
 

注意:Sascha提到的方法只有在使用#setProperty 方法。 在 resetChanges() API。

希望这会有所帮助!

最好的问候

Himanshu

一周热门 更多>