У меня есть приложение, которое работает в тестовых целях с локальными фиктивными данными JSON. Объект oData содержит массивы со значениями, и приложение работает по желанию. Теперь мы переключаемся с локального файла фиктивных данных на потребление данных с помощью службы oData из серверной системы SAP. Здесь я получаю данные в объектах JSON, и не все функции работают должным образом (пример функций фильтра).
Может ли кто-нибудь поделиться со мной мыслями об объектах и массивах JSON? И как мне получить данные из серверной системы в виде массива вместо объекта?
В версии с фиктивными данными я делаю это, чтобы определить свою модель:
this._oModel = new JSONModel(jQuery.sap.getModulePath("myApplication", "/localService/mockdata/nodesSet.json"));
В версии oData модель определена в manifest.json:
this._oModel = this.getOwnerComponent().getModel();
Примечание. Мне известны разные имена объектов (например, nodes vs nodesSet), и это не часть проблемы.
Спасибо!
Зачем вообще нужен доступ к внутреннему свойству oData? Почему приложению нужно заботиться о том, массив это или карта? Если все приложение было построено на основе предположения, что oData является массивом, я боюсь, что переход на ODataModel, который является серверная модель в отличие от JSONModel, будет для вас огромной задачей.
хорошая точка зрения. У меня нет прямого доступа к свойству oData, но я определил это как разницу между моей рабочей и нерабочей версией. Код, который не работает: aItems = this._oModel.getData (). Nodes (или .... nodesSet в моей версии oData).



Одним из простых способов было бы не создавать модель в манифесте, а выполнять явное чтение в контроллере как:
var oModel = new sap.ui.model.odata.v2.ODataModel(url, true);
that=this;
oModel.read( "/Products", {
urlParameters: {
"$skip": 0,
"$top": 50
},
success: function( oData) {
//here oData shall have an array of objects "results"
**-------------Set the model here using this array -> results ------**
},
error: function(oError) {
alert("error");
}
});Однако я не горжусь этим решением и проверю, смогу ли я лучше прокомментировать.
что точно не работает с oData?