我已经在manifest.json
中配置了从SAP UI5访问我的OData服务的信息{
"sap.app": { ...
},
"dataSources": {
"Test": {
"uri": "/sap/opu/odata/sap/ZHCM_SRV/",
"type": "OData",
"settings": {
"odataVersion": "2.0",
"localUri": "localService/metadata.xml"
}
}
} ...
"sap.ui5": {
"rootView": {
"viewName": "test.view.App",
"type": "XML",
"id": "app"
}, ...
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "test.i18n.i18n"
}
},
"Test": {
"type": "sap.ui.model.odata.v2.ODataModel",
"settings": {
"defaultOperationMode": "Server",
"defaultBindingMode": "TwoWay",
"defaultCountMode": "None"
},
"dataSource": "Test"
}
},
"routing": { ...
}
在我的Component.js中,我有:
init: function() {
UIComponent.prototype.init.apply(this, arguments);
this.getRouter().initialize();
this.setModel(models.createDeviceModel(), "device");
// I get the Url from configuration in Manifest.json
var sServiceUrl = this.getMetadata().getManifestEntry("sap.app").dataSources["Test"].uri;
// I create the OData
var sabModel = new sap.ui.model.odata.v2.ODataModel(sServiceUrl);
// Load the MetaData.
sabModel.getServiceMetadata();
// Binding to the Model.
this.setModel(sabModel, "Sabbatical");
当我检查oModel时,我可以看到我已经实例化了Model,但它是空的,没有数据......你有这种行为吗?任何建议???
非常感谢!! CBR
答案 0 :(得分:0)
到目前为止,您所做的是:建立与模型的连接。
如果你想用数据填充它,你可以通过将模型绑定到UI元素来实现,例如a table,或以编程方式读取数据:sap.ui.model.Model getProperty()。
在你的情况下,你打电话
var yourVariable = sabModel.getProperty('path/to/your/property');
答案 1 :(得分:0)
OData模型最初不包含来自实体的任何数据。它只是在模型实例化期间请求的元数据。
可以通过以下方式收集实体集:
查看文档OData V2 Model 以下是similar answer:https://embed.plnkr.co/wAlrHB/
的示例注意:getProperty
和getObject
都不会发送任何请求,但会从缓存中返回值的副本。