【问题标题】:Can I use factory functions to bind Rows and Columns in sap.ui.Table control?我可以使用工厂函数来绑定 sap.ui.Table 控件中的行和列吗?
【发布时间】:2017-05-23 17:30:10
【问题描述】:

我正在使用 XML 视图在我的 SAPUI5 项目中创建视图。我试图实现工厂函数以用于 sap.ui.Table 控件的列和行。列工厂似乎工作正常,但由于某种原因,行工厂永远不会被执行。

查看:

<Table
    id="dataPreviewTbl"
    class="data-preview"
    columns="{path: 'oModel>/columns', factory: '.colFactory'}"
    rows="{path: 'oModel>/rows', factory: '.rowFactory'}" >
</Table>

控制器:

colFactory: function(sId, oContext) {
    var sColumnId = oContext.getObject().name;
    var multiLabels = [];
    multiLabels.push(
        new sap.m.Label({
            text: sColumnId,
            design: "Bold"
        })
    );
    multiLabels.push(
        new sap.m.Label({
            text: dataType
        })
    );
    return new sap.ui.table.Column({
        multiLabels: multiLabels,
        sortProperty: sColumnId,
        filterProperty: sColumnId,
        flexible: false
    });
},

rowFactory: function(sId, oContext) {
    var cells = [];
    for (let i = 0; i < this.colCount; i++) {
        cells.push(new sap.m.Text({
            "text": "{oModel>" + i + "}"
        }));
    }

    return new sap.ui.table.Row({
        "cells": cells
    });
}

我已根据特定要求实现了行和列的动态绑定。有人可以在这里建议或帮助我吗?可以让我的头脑思考什么是缺失或错误的。谢谢。

【问题讨论】:

    标签: javascript data-binding sapui5


    【解决方案1】:

    对不起。 sap.ui.table.Table 使用工厂函数intentionally left out 来处理大量数据(根据我的经验,即使在 Chrome 上,sap.m.Table 也不能流畅地完成)。 sap.ui.table.Table 可以做到这一点,因为它在用户滚动时重用了它的 DOM-Element,这与工厂函数的工作方式不同。

    如果你真的需要使用工厂函数,恐怕除了实现 sap.m.Table 之外别无他法(虽然性能会受到影响,尤其是在客户端严重依赖 IE 的情况下)。 如果没有,请在列控件中定义templates

    【讨论】:

      猜你喜欢
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      相关资源
      最近更新 更多