有没有办法定义一个动态返回控件的函数作为SAPUI5表中列的模板?
因此,模型中的一个列基本上包含逗号分隔的图像链接值,其数量可以从1到很多不等。因此,根据链接的数量,我需要在列的同一单元格中显示它们。所以这是我写的代码:
var oColumn2 = new sap.ui.table.Column({
label: new sap.ui.commons.Label({text: "Fuel Type"}),
width: "20%"
});
oColumn2.bindAggregation("template", "/modelData", function(sId, oContext) {
var imgLink = oContext.getProperty("FuelType").split(",");
var fuelLayout = new sap.ui.commons.layout.MatrixLayout(sId, {
id : "fuelMatrix",
layoutFixed : true,
width:"100%",
});
var fuelRow = new sap.ui.commons.layout.MatrixLayoutRow();
fuelLayout.addRow(fuelRow);
var fuelCell = new sap.ui.commons.layout.MatrixLayoutCell();
fuelRow.addCell(fuelCell);
for (var n=0; n < imgLink.length; n++){
fuelCell.addContent(new sap.ui.commons.Image({height:"30%", width:"30%", src:imgLink[n]}))
}
return fuelLayout;
});
问题是每一行都重复相同的图像...
答案 0 :(得分:2)
您可以使用factory function in aggregation bindings而不是控件实例。
我已将JSBin example放在一起,这是代码的相关部分:
new sap.m.List()
.bindItems('/people', function(sId, oContext) {
return (oContext.getProperty('number') % 2) ?
new sap.m.StandardListItem({
title: '{name}',
description: '{number}'
}) :
new sap.m.DisplayListItem({
label: '{name}',
value: '{number}'
});
});
这个简单的示例返回一个不同样式的列表项,具体取决于项的'number'属性的值是偶数还是奇数。