如何重置延迟的odata请求

2020-09-19 16:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在使用v2 odata模型推...

         点击此处--->   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梦
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

一周热门 更多>