SAPUI5 OData V4读取

时间:2019-05-21 06:47:04

标签: odata sapui5 odata-v4

您能告诉我如何在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);
                }
            });

1 个答案:

答案 0 :(得分:0)

来自documentation

  

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
    }
});