我试图在我的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的模型? 我知道还有其他可能性来加载有效的模型,但我只是在这种特定情况下有所改变。
答案 0 :(得分:0)
如果没有关于您实际尝试实现的内容的其他信息,很难指出您正确的方向。
重要信息是您使用的是ODataModel +模拟服务器。感谢mockserver,您可以轻松地模拟OData服务实体的数据 - 实际上您甚至可以模拟更多......
基本上,模拟数据文件需要包含平面列表。换句话说,你总是有一系列扁平物体。模拟服务器从这些文件中获取数据(即id中的实体)。如果文件具有正确的名称,则mockserver只能查找文件(有关详细信息,请参阅演练教程)。根据经验,“1个文件包含一个实体/实体集的数据”。
无法在清单中对JsonObject进行建模。你可以做的是嘲笑你的模拟服务器(即通过手动读取json文件),它完美地工作(被探索的应用程序有一些例子)。但是,不要忘记我们正在谈论OData!
提示:您的数据看起来像一棵树,所以我想您想要建模树结构。如果您查看已探索的应用程序,则有一些OData树绑定示例,我也在使用模拟服务器。也许这有帮助...