javascript - SAPUI5 在 Controller 中获取 OData 模型

标签 javascript odata sapui5

我正在 SAPUI5 中制作简单的项目,我在从 Controller 中的 OData 获取数据时遇到了一些问题。我猜在 js 中是否可行。

我通过目的地连接到 Northwind.svc。 我可以仅使用“{/Products}”轻松地在 .view 文件中显示它,但在 .controller 文件中没有任何效果。 我尝试使用 this.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");
    }

模型.js:

return {

    createDeviceModel: function() {
        var oModel = new JSONModel(Device);
        oModel.setDefaultBindingMode("OneWay");
        return oModel;
    }
};

知道我做错了什么吗?

最佳答案

您可以使用getObjectODataModel 获取您的对象或属性,例如,您可以通过以下方式获取Email 属性:

oModel.getObject("/Clients(KEY)/Email")

或者您可以先获取整个对象,然后再访问 Email 属性

oModel.getObject("/Clients(KEY)").Email

KEY 在您的示例中应为 9000005L response

关于javascript - SAPUI5 在 Controller 中获取 OData 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45610387/

相关文章:

wcf - 如何使用 EF 6 为 WCF 数据服务 (odata) 设置配置文件

wcf - Odata 压缩 - 有任何支持吗? (适用于 WinRT 的 WCF 数据服务 5.0)

line - 萨普伊5水平线

javascript - 在 View 中查看 Controller 的模型数据 [sap ui5]

javascript - AngularJS 中的 Kendo Sortable 事件,如何捕获?

javascript - 分析性能敏感的代码路径

asp.net - 有没有办法让 Swashbuckle 将 OData 参数添加到 Web API 2 IQueryable<T> 端点?

javascript - 如何从 SAPUI5 中的 REST 端点获取模型

javascript - 什么时候应该使用 WebHID 而不是 WebUSB?

javascript - TinyMCE 4 : How to get the real HTML content from a page with many DIV inline editors on same page?(保存到1个文件)