0

我正在尝试在我的 webapp 中的 manifest.json 中设置一个数据模型。我正在使用 sapui5,我对它很陌生。

我从我的 api 获得的资源是一个 jsonObject 但不知何故模型没有正确启动。我用 console.log() 检查了模型,它是空的。当我对 jsonArray 执行相同操作时,它正在工作。

我应该提到我使用了一个 mockserver.js

这是我正在使用的代码。

清单.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 的模型?我知道还有其他可能加载有效的模型,但我只对这种特定情况感兴趣。

4

1 回答 1

0

如果没有关于您实际尝试实现的目标的更多信息,就很难为您指明正确的方向。

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

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

无法在清单中对 JsonObjects 进行建模。您可以做的是模拟您的模拟服务器(即通过手动读取 json 文件),这非常有效(探索的应用程序有一些示例)。但是,不要忘记我们在谈论 OData!

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

于 2018-03-15T10:47:01.900 回答