点击此处---> 群内免费提供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); } 我收到错误信息,因为oModel.saveEntry不是函数。 该方法在另一个JS文件中实现
(50.7 kB)
您好Dipti,
要执行CRUD操作,您可以按照文档由SDK维护。
关于您遇到的特定错误,这是因为您的语句oModel.saveEntry(param1,param2,param3); 编译器将其理解为为oDataModel库(sap.ui.model.odata.v2.ODataModel-如果使用v2模型)调用的方法。 由于库中不存在此类方法,因此会出现附加错误。
由于该方法是由您在多带带的js文件中定义的,因此您基本上需要做的是在控制器中扩展该js文件 。 这将允许您访问saveEntry函数。
如果您仍然遇到问题,请告诉我。
最好的问候,
Rohit p>
嗨,Dipti,
能否请您在这里在AppModel中共享saveEntry方法定义的代码段。
由于您正在调用该问题仍然存在 将该方法作为oDataModel库的方法,而该方法是自定义定义的。
最好的问候,
Rohit
嗨罗希特,
我已将控制器中的代码更改为AppModel.saveEntry(oObject,sUrl,sLocalPath); 我收到错误消息,因为AppModel.saveEntry不是函数。附加了错误 appmodel.png
嗨,Dipti,
如前所述,每当您通过首先附加标准UI5控件库来调用方法时,都会在该特定类中搜索该方法。 因此,调用
实质上是使渲染器在oDataModel.v2类中搜索saveEntry方法。 这就是您在控制台日志中出现错误的原因。
相反,您应该按以下方式调用该方法:
当您如上所述调用方法时,渲染器将在当前控制器实例中查找此方法。 由于sap.ui.define中还包含AppModel js,因此该方法将被识别并执行。
如果遇到问题,请告诉我。
最好 问候
罗希特
嗨罗希特
我能够解决该错误。 通过在编辑控制器中添加以下代码。
var oAppModel = new AppModel();
oAppModel.saveEntry(oObject,sUrl,sLocalPath);
现在,我可以输入另一个JS文件中定义的方法。 但是新问题是在该特定会话中,所有更改都将到来,但是每当我重新加载该应用程序时,所有更改都将消失,它会显示原始值。 我认为此更改将上升到"模型"级别,但仅上升到数据文件。 所以当我重新运行时,原始数据来自文件。
请让我知道。
一周热门 更多>