【发布时间】:2017-03-15 14:00:20
【问题描述】:
我正在使用 OData v4 将数据从后端加载到前端(使用 SAP UI5 开发),并且我正在使用表单来显示详细信息页面。当我单击“编辑”按钮时,我可以编辑数据。我的实现类似于这个例子:https://sapui5.hana.ondemand.com/explored.html#/sample/sap.ui.layout.sample.Form354/code/Page.controller.js
在编辑某些内容时,数据会直接在模型中编辑,因此会在后端进行更新。但是,我希望能够选择是要保存更改还是要在后端更新之前取消编辑。
我读到其他问题,可以将 ODataModel 复制到 JSONModel 并改用该副本,方法是:
var oModel = this.getView().getModel();
var oModelJson = new sap.ui.model.json.JSONModel();
oModel.read("/Data", {
success: function(oData, response) {
oModelJson.setData(oData);
sap.ui.getCore().setModel(oModelJson, "oJSONModel");
alert("Success!");
},
error: function(response) {
alert("Error");
}
});
但是,读取方法似乎不适用于 OData v4。加载数据的控制器的代码如下所示:
onInit: function() {
this.oModel = new ODataModel({
groupId : "$direct",
synchronizationMode : "None",
serviceUrl : '/odata/'
});
this.getView().setModel(this.oModel, 'oModel');
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.getRoute("details").attachPatternMatched(this._onObjectMatched, this);
this._showFormFragment("display");
},
_onObjectMatched: function (oEvent) {
this.getView().bindElement({
path: "/Data(" + oEvent.getParameter("arguments").dataPath + ")",
model: "oModel"
});
//I want to copy the data from the ODataModel to the JSONModel here
},
完成此任务的最佳方法是什么?以及如何使用 OData v4 做到这一点?
【问题讨论】:
标签: javascript json odata sapui5