将ODataModel复制到JSONModel以在表中使用

时间:2016-12-21 08:59:25

标签: json odata sapui5 sap-fiori

我需要在表格中显示一个列表。此列表应在客户端进行过滤,因此我需要将OData模型复制到本地JSON模型中。

OData模型如下所示:

OData模型

enter image description here

我能够显示" / ZcountWerksSet"使用以下代码在表中列出(来自OData模型):

oSearchTable.bindAggregation("items", "/ZcountWerksSet", new sap.m.ColumnListItem({
             cells : [
                  new sap.m.Text({
                       text : "{Name1}"
                  }),
                  new sap.m.Text({
                       text : "{Werks}"
                  })
             ]
        }));

然后我将其复制到这样的JSON模型中:

            var oModel = this.getView().getModel();
            var oModelJson = new sap.ui.model.json.JSONModel();
            oModel.read("/ZcountWerksSet", {
            success: function(oData, response) {
                oModelJson.setData(oData);
                sap.ui.getCore().setModel(oModelJson, "oJSONModel");
                alert("Success!");
            },
            error: function(response) {
                alert("Error");
            }
        });

然后模型看起来像这样

JSON模型

JSON Model

尝试在使用以下代码的表中显示相同的列表(这次来自JSON模型)不起作用:

oSearchTable.bindAggregation("items", "{oJSONModel>/}", new sap.m.ColumnListItem({
             cells : [
                  new sap.m.Text({
                       text : "{oJSONModel>Name1}"
                  }),
                  new sap.m.Text({
                       text : "{oJSONModel>Werks}"
                  })
             ]
        }));

如何在表格中显示相同的数据,但这次只能从JSON模型中显示?

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:0)

您需要采用绑定路径{oJSONModel>/results},因为不同的绑定实现用于JSONModel。

答案 1 :(得分:0)

你是对的。我这样做了,现在工作正常。

        var oSearchTable = sap.ui.getCore().byId("searchTableId");
        var oModel = this.getView().getModel();
        var oModelJson = new sap.ui.model.json.JSONModel();
        oModel.read("/ZcountWerksSet", {
            success: function(oData, response) {
                oModelJson.setData(oData);
                var oRow = new sap.m.ColumnListItem({
                     cells : [
                          new sap.m.Text({
                               text : "{Name1}"
                          }),
                          new sap.m.Text({
                               text : "{Werks}"
                          })
                     ]
                });
                oSearchTable.setModel(oModelJson);
                oSearchTable.bindItems("/results", oRow);
                sap.ui.getCore().setModel(oModelJson, "oJSONModel");
            }
        });