Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sapui5 使用UI5、JSON文件展开模拟数据_Sapui5 - Fatal编程技术网

Sapui5 使用UI5、JSON文件展开模拟数据

Sapui5 使用UI5、JSON文件展开模拟数据,sapui5,Sapui5,我试图模拟一些基于现有和工作oData模型的数据。模拟服务器可以工作,但我正在努力使$expand完成它的工作。我认为这主要是因为我不了解JSON存储在哪里或如何存储 元数据文件从工作服务中逐字复制,包含所有实体、EntitySet、关联等 以下是一些相关的位。从用户实体: <NavigationProperty Name="Dealers" Relationship="Y_DP_CORE_SRV.User_Dealer" FromRole="FromRole_User_Dealer" T

我试图模拟一些基于现有和工作oData模型的数据。模拟服务器可以工作,但我正在努力使
$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,
        ....            :    .... },
     ... ]
     }