2017-05-03 3 views
0

odaata-service를 사용하는 SAPUI5 App에서 작업 중입니다. EntitySet을 업데이트하는 중에 오류가 발생하는 경우 변경 사항이 손실되지 않도록하려면 전에 함수 호출이 있습니다. 이 functionCall은 엔티티의 업데이트 메소드와 동일한 코드를 호출하지만 커밋하지 않습니다. 함수 호출의 success-Method에서 submitChanges-Method를 호출합니다. 잘 작동하지만 지금은 일부 필드에 문제가 있습니다. 두 필드를 변경하고 모델 (oModel.getPendingChanges)에서 변경 사항을 발견했습니다. functionCall 호출 후 일부 변경 사항이 손실됩니다. 이 경우 변경 사항 중 하나가 손실되고 다른 하나는 모델에 계속 표시됩니다.SAPUI5 pendingChanges가 손실 됨

onSavePressed: function() { 
      if (this.getView().getModel().hasPendingChanges()) { 
       var oChanges = new sap.ui.model.json.JSONModel(); 
       oChanges.setData(this.getView().getModel().getProperty("/" + this.sPath)); 


       this.getView().getModel().callFunction("/CheckData", { 
        method: "GET", 
        urlParameters: { 
         param1: oChanges.oData.param1, 
         param2: oChanges.oData.param2, 
         param3: oChanges.oData.param3, 
         param4: oChanges.oData.param4 
        }, 
        success: function(oData, response) { 
         this.getView().getModel().submitChanges({ 
          success: function(oData, oResponse) {         
           sap.m.MessageToast.show(this.getView().getModel("i18n").getResourceBundle().getText("DATA_SAVED")); 
          }.bind(this), 
          error: function(oError) { 
           console.log(oError); 
          }.bind(this) 
         }); 
        }.bind(this), 
        error: function(oError) { 
         console.log(oError); 
        }.bind(this) 
       }); 
      } 

     }, 

이 변경 분실 또는 방법이 변화의 손실을 방지하기 위해 왜 생각을 가지고 있습니까 : 여기 내 저장-방법?

답변

0

문제의 원인을 발견했습니다. callFunction에 대한 설명서를 읽었어야합니다. 함수 가져 오기의 반환 유형이 엔티티 유형 또는 엔티티 유형의 컬렉션 인 경우 변경 사항은 모델에 반영됩니다.