Javascript SAPUI5在控制器中获取OData模型
我正在用SAPUI5做一个简单的项目,在控制器中从OData获取数据时遇到了一些问题。我猜这在js中是否可行 我通过目的地连接Northwind.svc。 我可以简单地使用“{/Products}”在.view文件中显示它,但在.controller文件中没有任何功能。 我试图使用这个.getView().getModel(),创建新的sap.ui.model.odata.v2.ODataModel({serviceUrl:“services.odata.org/Northwind/Northwind.svc}) 我一直都想得到好处,但我只是得到了回报 这是我的manifest.json文件的一部分Javascript SAPUI5在控制器中获取OData模型,javascript,odata,sapui5,Javascript,Odata,Sapui5,我正在用SAPUI5做一个简单的项目,在控制器中从OData获取数据时遇到了一些问题。我猜这在js中是否可行 我通过目的地连接Northwind.svc。 我可以简单地使用“{/Products}”在.view文件中显示它,但在.controller文件中没有任何功能。 我试图使用这个.getView().getModel(),创建新的sap.ui.model.odata.v2.ODataModel({serviceUrl:“services.odata.org/Northwind/Northw
"sap.app": {
"dataSources": {
"Northwind": {
"uri": "/V2/Northwind/Northwind.svc/",
"type": "OData",
"settings": {
"odataVersion": "2.0",
"localUri": "localService/Northwind/metadata.xml"
}
}
}
},
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "Odczyty.i18n.i18n"
}
},
"": {
"type": "sap.ui.model.odata.v2.ODataModel",
"settings": {
"defaultOperationMode": "Server",
"defaultBindingMode": "Default",
"defaultCountMode": "Request"
},
"dataSource": "Northwind",
"preload": true
}
neo-app.json:
"routes": [
{
"path": "/resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/resources"
},
"description": "SAPUI5 Resources"
},
{
"path": "/test-resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/test-resources"
},
"description": "SAPUI5 Test Resources"
},
{
"path": "/V2/Northwind/Northwind.svc/",
"target": {
"type": "destination",
"name": "Northwind"
},
"description": "Northwind OData Service"
}
]
组件:js
init: function() {
// call the base component's init function
UIComponent.prototype.init.apply(this, arguments);
// set the device model
this.setModel(models.createDeviceModel(), "device");
}
models.js:
return {
createDeviceModel: function() {
var oModel = new JSONModel(Device);
oModel.setDefaultBindingMode("OneWay");
return oModel;
}
};
你知道我做错了什么吗?你可以使用
getObject
从ODataModel
获取你的对象或属性,例如,你可以通过以下方式获取电子邮件属性:
oModel.getObject("/Clients(KEY)/Email")
或者,您可以先获取整个对象,然后访问电子邮件属性
oModel.getObject("/Clients(KEY)").Email
示例中的键应为
9000005L
您好,请尝试在控制器中调用此.getOwnerComponent().getModel()。您好,感谢您的回复!昨天已经找到了,它真的很有效,但还有一个问题——当我试图获取一些属性时,它只返回空对象。我试过使用oModel.getProperty(“/”)oModel.getProperty(“/Clients(1)/Id”);oModel.getData(“/”);和其他一些技巧,但没有返回数据。请指定您希望从NorthWind按模型获取的对象和属性。啊,没有告诉您。。昨天我决定在eclipse中连接我的朋友odata。现在结构看起来是这样的:首先,我得到了“未定义”。试图使用var smth=oModel.getObject(“/Clients(9000005L)”;和var smth=oModel.getObject(“/Clients('9000005L')”);。第二个是“无法读取属性或未定义”。你确定“oModel”已经定义了吗?我想我已经定义了,在调试模式下,我的oMetadata有正确的模式,实体类型很奇怪。你能把你的整个代码片段放在你的问题里吗?我会尝试用java servlet处理数据,但是对于你的帮助,也许会对其他人有所帮助。