我的oData服务中有这个模型:
{
"entity": [
{
"valueA": "ABC",
"valueB": "DEF",
"childL1": [
{
"valueC": "GHI",
"valueD": "JKL"
},
{
"valueC": "MNO",
"valueD": "PQR"
}
]
},
{
"valueA": "ABC",
"valueB": "DEF",
"childL1": [
{
"valueC": "GHI",
"valueD": "JKL"
},
{
"valueC": "MNO",
"valueD": "PQR"
}
]
}
]
}
请注意,对于我的“实体”集中的每个“孩子”,还有一个可能的'childL1'数组。
我在UI5中有表,我通过以下方式绑定控制器中的数据:
this.myTable.bindAggregation('items', {path: /entity, template: this.oTemplate});
这样可行,但表格显示:
Child1
Child2
但是,我想做的是:
/0/ChildL1/0
/0/ChildL1/0
/1/ChildL1/0
/1/ChildL1/0
所以,为此,我可以这样做:
this.myTable.bindAggregation('items', {path: /entity/childL1, template: this.oTemplate});
结果如预期。但是,我还需要在表格中显示valueA
。由于我的绑定是在child1,我将无法获得/ entity / n / valueA。
我可以为此做些什么?如果childL1有'key',有没有办法回溯?或者我可以entity
然后在表格中显示childL1
吗?
答案 0 :(得分:0)
由于您没有提到表格控件,例如您正在使用哪种控件 - sap.ui.table.Table或sap.m.Table。如果是" sap.ui.table.Table"您可以绑定单个列,如下所示
oTable.addColumn(new sap.ui.table.Column({
label : new sap.m.Label({
text : " "
}),
template : new sap.m.Text({
maxLines : 1
}).bindProperty("text", "valueA"),
}));
oTable.addColumn(new sap.ui.table.Column({
label : new sap.m.Label({
text : " "
}),
template : new sap.m.Text({
maxLines : 1
}).bindProperty("text", "childL1/valueC"),
}));
像这样你可以添加任何不。具有不同路径的列但它们的父路径应该是相同的,然后最后你可以将主路径绑定到这样的表行 -
oTable.bindAggregation("rows", {
path : "/entity"
});
答案 1 :(得分:0)
如果是sap.m.Table,你可以这样做 -
new sap.m.Table({ items:{
path:"/entity",
template: new sap.m.ColumnListItem({
cells:[
new sap.m.Text({
text:"{valueA}"
}),
new sap.m.Text({
text: "{childL1/valueC}"
})
]
})
}
})