我想绑定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。请先感谢
有多个错误的假设:
items="{Employee>/EmployeeList}"
这里假定您有一个名称为
Employee
的模型,该模型具有顶级属性EmployeeList
。实际上,您有一个没有名称且具有顶级属性
Employee
的模型。您可以选择:
如果您无法更改模型,则可以选择此选项(因为它来自后端)。>>
从绑定中删除模型名称(因为您的模型没有名称)。建立正确的清单路径。在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>
如果您对模型结构不满意,并认为绑定有意义,那么您也可以更改模型。
首先,更改您的对象,以便EmployeeList是您的顶层结构:
var xyz={
"EmployeeList":[
{
"key":"ram",
"value":"ram"
},
{
"key":"raj",
"value":"raj"
},
{
"key":"rani",
"value":"rani"
}
]
}
[将模型设置为视图时,还要在绑定中提供所需的名称:
this.getView().setModel(oModel, "Employee");
[好,您正在将视图上的模型设置为未命名的模型。因此,正确的绑定是:
<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>