【发布时间】:2018-03-15 09:30:16
【问题描述】:
我正在尝试在我的 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 的模型? 我知道还有其他可能加载有效的模型,但我只对这种特定情况感兴趣。
【问题讨论】:
-
如果模型为空,您在哪里控制模型?请提供更多代码。
-
我在 init 函数内的 component.js 中做到了。当我使用 JsonArray 时,我会在控制台中得到一个很好的模型作为输出,但使用 JsonObject 它只是一个空骨架。
-
但是这样你可以只记录元数据。我的意思是我之前没有使用过模拟服务器,但它是基于 oData 的,所以如果你想获取一些数据,你应该运行 oData 操作(读取、创建等),对吧?
-
目前还不清楚你要达到什么目的。你说的“api”是什么?
-
嗯,好的,抱歉。我想我只是一个新手,我认为这很清楚。我对 api 的意思只是一个 url,在我的示例中,我的第一个代码 sn-p 中的“dataSources”下面的那个。不过我应该提一下,一旦我停止使用我的模拟服务器,我将使用的 url 将有所不同,并产生一个 JsonObject。上面写的url只是用来测试mockserver的。
标签: json model sapui5 manifest.json