Sapui5 使用UI5、JSON文件展开模拟数据
我试图模拟一些基于现有和工作oData模型的数据。模拟服务器可以工作,但我正在努力使Sapui5 使用UI5、JSON文件展开模拟数据,sapui5,Sapui5,我试图模拟一些基于现有和工作oData模型的数据。模拟服务器可以工作,但我正在努力使$expand完成它的工作。我认为这主要是因为我不了解JSON存储在哪里或如何存储 元数据文件从工作服务中逐字复制,包含所有实体、EntitySet、关联等 以下是一些相关的位。从用户实体: <NavigationProperty Name="Dealers" Relationship="Y_DP_CORE_SRV.User_Dealer" FromRole="FromRole_User_Dealer" T
$expand
完成它的工作。我认为这主要是因为我不了解JSON存储在哪里或如何存储
元数据文件从工作服务中逐字复制,包含所有实体、EntitySet、关联等
以下是一些相关的位。从用户
实体:
<NavigationProperty Name="Dealers" Relationship="Y_DP_CORE_SRV.User_Dealer" FromRole="FromRole_User_Dealer" ToRole="ToRole_User_Dealer" />
我还可以使用未扩展版本的deralers
,将数组移动到自己的deralers.json
文件中,在这种情况下,行如下所示
"Dealers": {
"__deferred": {
"uri": "http://localhost/sap/opu/odata/sap/Y_DP_CORE_SRV/Users('PRX-00015')/Dealers"
}
}
和derals.json
[{
"__metadata": {
"id": "http://localhost/sap/opu/odata/sap/Y_DP_CORE_SRV/Dealers('AA2002')",
"uri": "http://localhost/sap/opu/odata/sap/Y_DP_CORE_SRV/Dealers('AA2002')",
"type": "Y_DP_CORE_SRV.Dealer"
},
"Id": "AA2002"
}, {
"__metadata": {
"id": "http://localhost/sap/opu/odata/sap/Y_DP_CORE_SRV/Dealers('AA1046')",
"uri": "http://localhost/sap/opu/odata/sap/Y_DP_CORE_SRV/Dealers('AA1046')",
"type": "Y_DP_CORE_SRV.Dealer"
},
"Id": "AA1046"
}]
所有这些都会导致一个空的
经销商
数组(经销商.length
为0)。有人知道这是怎么回事吗?通常项目结构如下所示:
webapp/
- localService/
- mockdata/
- Y_DP_CORE_SRV.User
- Y_DP_CORE_SRV.Dealer.json
- metadata.json
但实际上,文件在哪里并不重要,重要的是MockServer如何实现。MockServer应该将真实URL模拟到真实服务器,并从您提供的文件中返回虚假数据。你已经看过这个例子了吗
关于扩展。通常,在xml视图中,可以通过定义expand参数来扩展具有绑定属性的相关实体。在javascript中,它的工作方式类似。当我访问我的计算机时,我可以提供一些示例,但它与MockServer并没有真正的联系,因为所有扩展参数都保持不变,无论它是mockdata还是来自真实后端的真实数据
更新:以下是如何从视图和访问属性展开模型的示例:
您为read OData编写了哪些代码? OData在读取操作时需要URL参数:
oModel.read("/User", {
urlParameters:{
"$expand" : "Dealers"
},
success: function (oData) {
var oJson = new sap.ui.model.json.JSONModel();
oJson.setData(oData);
oVista.setModel(oJson);
}
});
您必须读取用户集,并使用经销商的导航属性进行扩展,因此必须从Users JSON对象的经销商属性中获得一个具有相应用户经销商附加的树,类似于:
User: {
property1 : value1,
... : ...,
Dealers : [
{ dealer1Property1 : dealer1Value1,
.... : .... },
{ dealer2Property1 : dealer2Value2,
.... : .... },
... ]
}
之后,Skay的xml代码必须成功
oModel.read("/User", {
urlParameters:{
"$expand" : "Dealers"
},
success: function (oData) {
var oJson = new sap.ui.model.json.JSONModel();
oJson.setData(oData);
oVista.setModel(oJson);
}
});
User: {
property1 : value1,
... : ...,
Dealers : [
{ dealer1Property1 : dealer1Value1,
.... : .... },
{ dealer2Property1 : dealer2Value2,
.... : .... },
... ]
}