您能告诉我如何在SAPUI5的OData V4中执行OData读取吗?
我可以在OData V2中很容易地做到这一点,如何使用oData V4实现类似的目的?
this_.getOwnerComponent().getModel("myModel").read("/zprojects", {
"async": true,
"success": function (oData) {
console.log(oData);
},
"error": function (oError) {
console.log(oError);
}
});
对我来说,问题是我想在绑定到视图之前整理数据以添加其他值。这是我的oData V2完整代码:
this_.getOwnerComponent().getModel("myModel").read("/zprojects", {
"async": true,
"success": function (oData) {
var myArray = [];
var pos;
for (var i = 0; i < oData.results.length; i++) {
pos = myArray.map(function (e) {
return e.ID;
}).indexOf(oData.results[i].PROJECTID);
if (pos === -1) {
myArray.push({
ID: oData.results[i].PROJECTID,
PROJECT_DESC: oData.results[i].PROJECT_DESC
});
}
}
myArray.sort((a, b) => (a.PROJECT_DESC > b.PROJECT_DESC) ? 1 : -1);
myArray.unshift({
ID: "-1",
PROJECT_DESC: "Please select Project ID"
oModel = new sap.ui.model.json.JSONModel(myArray);
sap.ui.core.Fragment.byId("idFragment", "project").setModel(oModel);
},
"error": function (oError) {
console.log(oError);
}
});
答案 0 :(得分:0)
OData V4模型仅支持使用绑定的数据访问。它不提供对数据的任何直接访问。
您可以通过创建伪绑定并侦听dataReceived
事件来解决该问题,但我建议使用jQuery's ajax features来请求数据,直到v4.ODataModel
支持直接访问数据:
$.get({
url: "<your_service_url>/zprojects",
success: function(data) {
// your success logic
},
error: function(error) {
// your error logic
}
});