我试图从oData返回模型获取属性。我将数据设置为从oData到JSON模型的成功回调函数。
oODataModel.read("/ConnObjSet?$filter=Objecttype eq 'CONNOBJ' and ConnObject eq '20000000002'",
true,
true,
false,
function _OnSuccess(oData, oResponse){
var oJSON = new sap.ui.model.json.JSONModel();
oJSON.setData(oData);
sap.ui.getCore().setModel(oJSON, "ConnectionObject");
},
这是我在控制台日志中的JSON对象和我想要获得的突出显示的属性。我希望从整个阵列中获得每15个Buspartner号码。
这就是我试图获得的财产:
var oLog = sap.ui.getCore().getModel("ConnectionObject").oData.results;
console.log(oLog);
答案 0 :(得分:1)
请尝试:
var aResults = this.getView().getModel().getProperty("/results");
var oJSONModel = new sap.ui.model.json.JSONModel();
oJSONModel.setProperty("/resultarray",new Array())
for(var i = 0; i<aResults.lenght;i++){
oJSONModel.getProperty("/resultarray").push(aResults[i].Buspartner)
}
答案 1 :(得分:1)
如果您有一个对象数组,则可以使用Array.map()函数从每个对象中获取一组属性。
所以在你的情况下:
var aResults = this.getView().getModel().getProperty("/results");
var aBuspartner = aResults.map(function (r) { return r.Buspartner});
var oJSONModel = new sap.ui.model.json.JSONModel();
oJSONModel.setProperty("/resultarray", aBuspartner)
答案 2 :(得分:1)
您还可以尝试添加过滤器并选择oData.read
oData-URL http://services.odata.org/V2/Northwind/Northwind.svc/Products 选择所有具有所有属性的产品
http://services.odata.org/V2/Northwind/Northwind.svc/Products?$filter=UnitsInStock%20eq%2017
仅显示具有“UnitsInStock = 17”
的产品http://services.odata.org/V2/Northwind/Northwind.svc/Products?$select=ProductID&$filter=UnitsInStock%20eq%2017
仅选择“UnitsInStock = 17”
的产品的ProductID所以
oODataModel.read("/ConnObjSet?$select=Buspartner&$filter=Objecttype eq 'CONNOBJ' and ConnObject eq '20000000002'"
...
应该直接获得过滤后的Buspartners。