用作SAPUI5表列的模板

时间:2014-03-10 12:29:13

标签: jquery sapui5

有没有办法定义一个动态返回控件的函数作为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;
    });

问题是每一行都重复相同的图像...

1 个答案:

答案 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'属性的值是偶数还是奇数。