sapui5 -CRUD操作

2020-08-13 20:33发布

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

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


大家好,

 OI正在sapui5中学习CRUD操作。 我创建了一个简单的应用程序。 现在尝试编辑应用程序中的详细信息。 我已附上错误和代码edit.png。 请建议我如何解决

  onSave:function(oEvent){
 调试器;
 var sLocalPath,
 sUrl ="",
//oRouter = this.getRouter(),
 sPath = this.getView()。getElementBinding()。getPath(),
//oModel = this.getModel(),
 oModel = this.getView()。getModel(),
 oObject = oModel.getProperty(sPath),
//oBundle = this.getResourceBundle();
 oBundle = this.getOwnerComponent()。getModel(" i18n")。getResourceBundle();
          sUrl = sUrl +"/img/Vendors/" + oObject.ID;
 sLocalPath = sPath;
 oModel.attachEventOnce(" requestCompleted",function(){
 this._oRouter.navTo(" master");
 this.getModel(" viewModel")。setProperty("/img/createMode",false);
 }, 这个);
 oModel.attachEventOnce(" requestFailed",function(){
 MessageToast.show(oBundle.getText(" updatedFailed"));;
 });
 oModel.saveEntry(oObject,sUrl,sLocalPath);
 }




 我收到错误信息,因为o​​Model.saveEntry不是函数。 该方法在另一个JS文件中实现





 

(50.7 kB)

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

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


大家好,

 OI正在sapui5中学习CRUD操作。 我创建了一个简单的应用程序。 现在尝试编辑应用程序中的详细信息。 我已附上错误和代码edit.png。 请建议我如何解决

  onSave:function(oEvent){
 调试器;
 var sLocalPath,
 sUrl ="",
//oRouter = this.getRouter(),
 sPath = this.getView()。getElementBinding()。getPath(),
//oModel = this.getModel(),
 oModel = this.getView()。getModel(),
 oObject = oModel.getProperty(sPath),
//oBundle = this.getResourceBundle();
 oBundle = this.getOwnerComponent()。getModel(" i18n")。getResourceBundle();
          sUrl = sUrl +"/img/Vendors/" + oObject.ID;
 sLocalPath = sPath;
 oModel.attachEventOnce(" requestCompleted",function(){
 this._oRouter.navTo(" master");
 this.getModel(" viewModel")。setProperty("/img/createMode",false);
 }, 这个);
 oModel.attachEventOnce(" requestFailed",function(){
 MessageToast.show(oBundle.getText(" updatedFailed"));;
 });
 oModel.saveEntry(oObject,sUrl,sLocalPath);
 }




 我收到错误信息,因为o​​Model.saveEntry不是函数。 该方法在另一个JS文件中实现





 

(50.7 kB)
付费偷看设置
发送
6条回答
黑丝骑士
1楼-- · 2020-08-13 20:34

您好Dipti,

要执行CRUD操作,您可以按照文档由SDK维护。

关于您遇到的特定错误,这是因为您的语句oModel.saveEntry(param1,param2,param3); 编译器将其理解为为oDataModel库(sap.ui.model.odata.v2.ODataModel-如果使用v2模型)调用的方法。 由于库中不存在此类方法,因此会出现附加错误。

由于该方法是由您在多带带的js文件中定义的,因此您基本上需要做的是在控制器中扩展该js文件 。 这将允许您访问saveEntry函数。

如果您仍然遇到问题,请告诉我。

最好的问候,

Rohit

Climb_Ma
2楼-- · 2020-08-13 20:58

嗨,Dipti,

能否请您在这里在AppModel中共享saveEntry方法定义的代码段。

由于您正在调用该问题仍然存在 将该方法作为oDataModel库的方法,而该方法是自定义定义的。

最好的问候,

Rohit

当学会了学习
3楼-- · 2020-08-13 20:52
 sap.ui.define([
 " sap/ui/model/json/JSONModel"

 ],函数(JSONModel){
 "使用严格";
 返回JSONModel.extend(" sapui5.test.mvcapp.model.AppModel",{
 saveEntry:函数(oObject,sUrl,sLocalPath){
 var that = this,oData;
 oData = JSON.stringify(oObject);
 jQuery.ajax({
 类型:" PUT",
 contentType:" application/json",
 数据:oData,
 url:sUrl,
 dataType:" json",
 成功:function(){
 that._updateModel(sLocalPath,oObject);
 that.createEntry("/");
 that.fireRequestCompleted();
 },
 错误:function(){
 that.fireRequestFailed();
 }
 });
 },
 _updateModel:函数(sLocalPath,数据){
 this.setProperty(sLocalPath,data);
 }});  });
 
南山jay
4楼-- · 2020-08-13 20:46

嗨罗希特,

我已将控制器中的代码更改为AppModel.saveEntry(oObject,sUrl,sLocalPath); 我收到错误消息,因为AppModel.saveEntry不是函数。附加了错误 appmodel.png

风早神人
5楼-- · 2020-08-13 20:46

嗨,Dipti,

如前所述,每当您通过首先附加标准UI5控件库来调用方法时,都会在该特定类中搜索该方法。 因此,调用

 oModel.saveEntry(oObject,sUrl,sLocalPath); 

实质上是使渲染器在oDataModel.v2类中搜索saveEntry方法。 这就是您在控制台日志中出现错误的原因。

相反,您应该按以下方式调用该方法:

 saveEntry(oObject,sUrl,sLocalPath); 

当您如上所述调用方法时,渲染器将在当前控制器实例中查找此方法。 由于sap.ui.define中还包含AppModel js,因此该方法将被识别并执行。

如果遇到问题,请告诉我。

最好 问候

罗希特

lukcy2020
6楼-- · 2020-08-13 20:38

嗨罗希特

我能够解决该错误。 通过在编辑控制器中添加以下代码。

var oAppModel = new AppModel();

oAppModel.saveEntry(oObject,sUrl,sLocalPath);

现在,我可以输入另一个JS文件中定义的方法。 但是新问题是在该特定会话中,所有更改都将到来,但是每当我重新加载该应用程序时,所有更改都将消失,它会显示原始值。 我认为此更改将上升到"模型"级别,但仅上升到数据文件。 所以当我重新运行时,原始数据来自文件。

请让我知道。



 

一周热门 更多>