我想绑定 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>
Run Code Online (Sandbox Code Playgroud)
这是我的 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);
Run Code Online (Sandbox Code Playgroud)
我有一个选择框,我想在视图页面中将员工姓名显示为下拉列表。如何绑定这个 XML。提前谢谢
有多种错误假设:
items="{Employee>/EmployeeList}"
Run Code Online (Sandbox Code Playgroud)
在这里,您假设您有一个名称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>
Run Code Online (Sandbox Code Playgroud)
如果您对模型结构不满意并认为您的绑定有意义,您也可以更改模型。
首先,更改您的对象,以便 EmployeeList 是您的顶级结构:
var xyz={
"EmployeeList":[
{
"key":"ram",
"value":"ram"
},
{
"key":"raj",
"value":"raj"
},
{
"key":"rani",
"value":"rani"
}
]
}
Run Code Online (Sandbox Code Playgroud)
将模型设置为视图时,还要提供您期望在绑定中使用的名称:
this.getView().setModel(oModel, "Employee");
Run Code Online (Sandbox Code Playgroud)