如何在XML中绑定嵌套的JSON数据

问题描述 投票:0回答:2

我想绑定JSON数据以查看我尝试过的操作,如下所示:

XML:

<m:Select id="Employee" items="{Employee>/EmployeeList}">
<c:Item key="{Employee>key}" text="{Employee>value}" />
<m:layoutData>
    <l:GridData span="L2 M2 S2"/>
</m:layoutData>

这是我的JSON数据的样子:

 var xyz = {
    "Employee": {

        "EmployeeList": [{
                "key": "ram",
                "value": "ram"
            },
            {
                "key": "raj",
                "value": "raj"
            },
            {
                "key": "rani",
                "value": "rani"
            }
        ]
    }
}
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(xyz);
this.getView().setModel(oModel);

我在视图中有一个选择框,我想在视图页面中将雇员姓名显示为下拉列表。如何绑定此XML。请先感谢

sapui5
2个回答
3
投票

有多个错误的假设:

items="{Employee>/EmployeeList}"

这里假定您有一个名称为Employee的模型,该模型具有顶级属性EmployeeList

实际上,您有一个没有名称且具有顶级属性Employee的模型。

您可以选择:

  • 更改您的绑定
  • 更改您的型号

选项A:更改绑定:

如果您无法更改模型,则可以选择此选项(因为它来自后端)。>>

从绑定中删除模型名称(因为您的模型没有名称)。建立正确的清单路径。在xyz的顶部有一个属性Employee,它是一个具有属性EmployeeList的对象。

<m:Select id="Employee" items="{/Employee/EmployeeList}">
    <c:Item key="{key}" text="{value}" />
    <m:layoutData>
        <l:GridData span="L2 M2 S2"/>
    </m:layoutData>
</m:Select>

选项B:更改您的型号

如果您对模型结构不满意,并认为绑定有意义,那么您也可以更改模型。

首先,更改您的对象,以便EmployeeList是您的顶层结构:

 var xyz={   
   "EmployeeList":[  
      {  
        "key":"ram",
        "value":"ram"
      },
      {  
        "key":"raj",
        "value":"raj"
      },
      {  
        "key":"rani",
        "value":"rani"
      }
   ]
}

[将模型设置为视图时,还要在绑定中提供所需的名称:

this.getView().setModel(oModel, "Employee");

1
投票

[好,您正在将视图上的模型设置为未命名的模型。因此,正确的绑定是:

<m:Select id="Employee" items="{/Employee/EmployeeList}">
    <c:Item key="{key}" text="{value}" />
         <m:layoutData>
                <l:GridData span="L2 M2 S2"/>
         </m:layoutData>
</m:Select>
© www.soinside.com 2019 - 2024. All rights reserved.