在manifest.json中加载JsonObject模型 - sapui5

时间:2018-03-15 09:30:17

标签: json model sapui5 manifest.json

我试图在我的webapp中的manifest.json中设置数据模型。 我正在使用sapui5而且我对它很陌生。

从我的api获取的资源是一个jsonObject,但不知何故模型没有正确启动。我用console.log()检查了模型,它是空的。 当我对jsonArray做同样的事情时,它正在发挥作用。

我应该提一下我使用的是mockserver.js

以下是我正在使用的代码。

manifest.json:

 "sap.app": {
            ...  
    "dataSources": {
                "invoiceRemote": {
                    "uri": "https://services.odata.org/V2/Northwind/Northwind.svc/",
                    "type": "OData",
                    "settings": {
                        "odataVersion": "2.0",
                        "localUri": "localService/metadata.xml"
                    }
                }
            }
        }  
    ...
"sap.ui5": {  
            ...  
             "models": {  
                    "i18n": {
                        "type": "sap.ui.model.resource.ResourceModel",
                        "settings": {
                            "bundleName": "MyInboxUI5.i18n.i18n"
                        }
                    },  
                    "invoice": {
                        "dataSource": "invoiceRemote"
                    }
    ...

和JsonObject我的意思是这种风格的.json:

{
    "field1": value1,
    "field2": value2,
    "field3": [  
    {  
    "field4": value4,  
    "field5": value5  
    },  
    {
   "field6": value6,  
   "field7": value7  
   } ]  
}

(那个不工作的人)

和JsonArray我的意思是

[  
   {  
   "field4": value4,  
   "field5": value5  
   },  
   {
   "field6": value6,  
   "field7": value7  
   }  
] 

(这个有效)

要检查我的模型,我使用了简单的console.log()
Component.js(部分内容)

init: function() {
        console.log(this.getModel("invoice"));

        UIComponent.prototype.init.apply(this, arguments);
        this.getRouter().initialize();
      }

我没有发布mockserver.js或metadata.xml,因为我不确定它是否相关,并且它们占用了大量空间。

所以有人知道是否有办法在manifest.json中加载JsonObject的模型? 我知道还有其他可能性来加载有效的模型,但我只是在这种特定情况下有所改变。

1 个答案:

答案 0 :(得分:0)

如果没有关于您实际尝试实现的内容的其他信息,很难指出您正确的方向。

重要信息是您使用的是ODataModel +模拟服务器。感谢mockserver,您可以轻松地模拟OData服务实体的数据 - 实际上您甚至可以模拟更多......

基本上,模拟数据文件需要包含平面列表。换句话说,你总是有一系列扁平物体。模拟服务器从这些文件中获取数据(即id中的实体)。如果文件具有正确的名称,则mockserver只能查找文件(有关详细信息,请参阅演练教程)。根据经验,“1个文件包含一个实体/实体集的数据”。

无法在清单中对JsonObject进行建模。你可以做的是嘲笑你的模拟服务器(即通过手动读取json文件),它完美地工作(被探索的应用程序有一些例子)。但是,不要忘记我们正在谈论OData!

提示:您的数据看起来像一棵树,所以我想您想要建模树结构。如果您查看已探索的应用程序,则有一些OData树绑定示例,我也在使用模拟服务器。也许这有帮助...