【问题标题】:UI5 Can we create json model using just the entity type metadata from a service modelUI5 我们可以仅使用服务模型中的实体类型元数据创建 json 模型吗
【发布时间】:2017-03-09 03:02:53
【问题描述】:

我想创建一个模型并将其设置为组件的 oninit 方法中的全局模型之一。我有一个只有实体类型的 sap 网关 odata 服务,并且没有相应的实体集。

我的 ui5 项目有 manifest.json 和默认模型和 component.js 是否可以仅使用元数据创建模型。

【问题讨论】:

    标签: odata sapui5


    【解决方案1】:

    初始化模型时,您只需要用于初始化 SAPUI5 OData 模型的元数据。只要元数据在语法上是有效的,它就不成问题。仅当您使用此模型将聚合分配给控件时,才需要 EntitySet。

    更新:

    可以从模型中获取元数据的详细信息并用它创建一个新的 JSON 模型。

    var oModel = new sap.ui.model.odata.ODataModel("http://services.odata.org/V2/OData/OData.svc");
    var metaModel = oModel.getMetaModel();
    
    var oEntitySet = metaModel.getODataEntitySet("Products");   //For getting properties of an Entity Set
    
    //For Entity, you may have to provide the service namespace along, in this case ODataDemo
    var oEntity = metaModel.getODataEntityType("ODataDemo.Product"); 
    

    oEntity 对象看起来像这样

    这样你就可以创建一个新的 JSON 模型了

    var oODataJSONModel = new sap.ui.model.json.JSONModel({"Selection" : oEntity.property });
    

    这是working example

    【讨论】:

    • 我能够成功创建一个模型,在 onInit() 方法中引用 oData 服务。现在我想在 oData 模型中创建一个 EntityType 的 JSON 模型。我在上面的原始消息中添加了 component.js onInit() 的屏幕截图,只是为了提供清晰的画面。
    • 那么您想从 OData 服务的元数据响应中创建一个模型吗?
    • 是的。那是对的。不确定这是否可能。该实体类型中有很多字段(20+)。尽量避免在本地构建 JSON 模型中的所有字段。
    • 这真的很有趣。 @Stephen - 添加“数据源”到清单是否与使用元数据手动创建模型具有相同的效果?如果我自己创建模型,我可以获得更快的应用程序吗?
    • 感谢@Stephen。我在这里link 尝试了您的代码示例。我不确定我做错了什么。我在控制台中看到类型错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2021-08-31
    • 2018-10-06
    • 1970-01-01
    • 2021-09-07
    • 2020-06-17
    相关资源
    最近更新 更多