Javascript SAPUI5在控制器中获取OData模型

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

我正在用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文件的一部分

"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处理数据,但是对于你的帮助,也许会对其他人有所帮助。