SAPUI5 OData V4 Чтение

Подскажите, пожалуйста, как выполнить чтение OData в OData V4 в SAPUI5?

Я могу сделать это очень легко в 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);
                }
            });

person user9550188    schedule 21.05.2019    source источник
comment
Вы уже посмотрели предоставленный учебник из демонстрационного комплекта? sapui5.hana.ondemand.com/#/topic/   -  person KristoffDT    schedule 21.05.2019
comment
Я прочитал это, но я не уверен, как мне обработать мои данные перед привязкой к idFragment. Любой пример кода?   -  person user9550188    schedule 21.05.2019
comment
@user9550188 user9550188 Каковы требования, которые, по вашему мнению, необходимы для обработки данных и отказа от всех привязок ODataModel в пользу JSONModel, которая является моделью на стороне клиента? Судя по предоставленному вами коду, единственным требованием является отображение Please select Project ID в качестве первого элемента Select(?). Это оно?   -  person Boghyon Hoffmann    schedule 21.05.2019
comment
Требование состоит в том, чтобы заполнить список значений в верхней части Пожалуйста, выберите идентификатор проекта. Итак, это выпадающий список с опцией выбора со значениями.   -  person user9550188    schedule 21.05.2019


Ответы (1)


Из документации:

Модель OData V4 поддерживает доступ к данным только с помощью привязок. Он не предоставляет прямого доступа к данным.

Вы можете обойти это, создав поддельные привязки и прослушивая событие dataReceived, но я бы предпочел использовать Функции jQuery ajax для запроса данных, пока v4.ODataModel не поддерживает прямой доступ к данным:

$.get({
    url: "<your_service_url>/zprojects",
    success: function(data) {
        // your success logic
    },
    error: function(error) {
        // your error logic
    }
});
person corschdi    schedule 21.05.2019
comment
Я не думаю, что v4.ODataModel когда-либо будет поддерживать API прямого чтения, поскольку это часто приводит к анти-паттернам (например, смешивание данных пользовательского интерфейса с бизнес-данными). Я очень рад, что они решили не поддерживать руководство read. - person Boghyon Hoffmann; 21.05.2019