SAPUI5 IconTabBar/IconTabFilter动态构建

SAPUI5 IconTabBar/IconTabFilter动态构建,sapui5,Sapui5,我对SAPUI5非常陌生,我认为IconTabBar/IconTabFilter可以帮助我创建一个页面。我不确定我能做我想做的事,但希望如此 我有一个页面,其中包含按产品分组的用户表 因此: 客户XYZ Product A User 1 User 2 Product B User 1 我想使用IconTabBar允许用户查看所有内容或仅查看特定产品(a或B)。我的问题是,可以动态创建IconBar和过滤吗?例如,每个客户不一定拥有多个产品。因此,我希望能够从json调用接收可能的产品,然后只

我对SAPUI5非常陌生,我认为IconTabBar/IconTabFilter可以帮助我创建一个页面。我不确定我能做我想做的事,但希望如此

我有一个页面,其中包含按产品分组的用户表

因此: 客户XYZ

Product A
User 1
User 2

Product B
User 1
我想使用IconTabBar允许用户查看所有内容或仅查看特定产品(a或B)。我的问题是,可以动态创建IconBar和过滤吗?例如,每个客户不一定拥有多个产品。因此,我希望能够从json调用接收可能的产品,然后只显示返回产品的图标

我的XML文件目前的布局如下所示(省略了一些代码以便于查看):


//列标题定义在这里
///定义的列值

在“custdata”中,我有(如图所示)产品计数(客户拥有的数量),产品存储在custdata/prod(一个数组)中。因此,我想为产品的选项卡/过滤器创建单独的图标。我是否可以添加它们,以便在页面显示时动态创建它们(因为每个客户可能比另一个客户多或少)?我看到的例子似乎是硬编码可能的标签/过滤器,所以我不知道是否有可能做到我想做的事情。我希望如此,因为这真的对我有帮助

我认为这应该是可能的

项目聚合必须绑定到模型的数据,然后进行调整

这里有一个例子:

var model = new sap.ui.model.json.JSONModel();
model.setData(
{
    filter: [
        { icon: "sap-icon://hint", text: 'hint'},
        { icon: "sap-icon://comment", text: 'comment'},
        { icon: "sap-icon://attachment", text: 'attachment'},
        { icon: "sap-icon://history", text: 'history'},
    ]
});

var iconTabBar = new sap.m.IconTabBar("iconTabBar", {
    expandable: true,
    expanded :true,
});

iconTabBar.setModel(model, "itbModel"); 
iconTabBar.bindAggregation("items", "itbModel>/filter", new sap.m.IconTabFilter({icon: "{itbModel>icon}", text:"{itbModel>text}"}));

这对你有帮助吗?

谢谢。我要试一试。我会更改XML还是只是将该代码添加到控制器中?我想,如果我理解了正确的做法,在我得到数据后,我可以在屏幕初始化时添加您的代码。我想知道是否应该添加一个ID,或者如果屏幕上有任何图标栏,它们是否都会被更改?如何在两者之间添加IContabSeparator?不幸的是,似乎无法在XML视图中声明此绑定:-(
var model = new sap.ui.model.json.JSONModel();
model.setData(
{
    filter: [
        { icon: "sap-icon://hint", text: 'hint'},
        { icon: "sap-icon://comment", text: 'comment'},
        { icon: "sap-icon://attachment", text: 'attachment'},
        { icon: "sap-icon://history", text: 'history'},
    ]
});

var iconTabBar = new sap.m.IconTabBar("iconTabBar", {
    expandable: true,
    expanded :true,
});

iconTabBar.setModel(model, "itbModel"); 
iconTabBar.bindAggregation("items", "itbModel>/filter", new sap.m.IconTabFilter({icon: "{itbModel>icon}", text:"{itbModel>text}"}));