过滤ListItem和sap.m.List中的格式化元素

时间:2018-04-27 11:17:46

标签: javascript sapui5

我一直在为列表开发过滤器。 我的列表在项目中显示一个图标,具体取决于实际数据记录中的两个条目。

new sap.ui.core.Icon({
    src : {
        parts : [
            { path : "Model>date" },
            { path : "Model>inventory" }                                        
        ],
        formatter : function(date, inventory) {
                if (!inventory) {
                    return "sap-icon://decline";
                }
                if (date != "31.12.9999") {
                    return "sap-icon://decline";
                }
                return "sap-icon://accept";
        }
    }
})

现在我将为此信息实施过滤器:

  • a)显示所有带有decline-icon
  • 的条目
  • b)显示所有带有accept-icon
  • 的条目

我的问题是过滤器只接受一个路径元素。

var dateFilter =new sap.ui.model.Filter({
    path : "date",
    test : function(date) {
        //pseudo code
        if(#filter-true)
            show entries with accept;
        else
            show entries with decline;
    }
});
aFilters.push(dateFilter)

但实际上我不知道实现这个过滤器。 有人能帮帮我吗?

PS:我知道我的语法不是最好的;)

1 个答案:

答案 0 :(得分:0)

您可以组合多个依赖于不同路径的过滤器。

var oDateFilter = new sap.ui.model.Filter({
    path : "date",
    test : function(sDate) {
        if(sDate === "31.12.9999"){
            return true;
        }
        return false;
    }
});

上面的代码创建了一个使用" date"你的模特的财产。

var oInventoryFilter = new sap.ui.model.Filter({
    path : "inventory",
    test : function(bInventory) {
        if(bInventory !== true){
            return false;
        }
        return true;
    }
});

上面的代码使用"库存"创建了一个过滤器。属性。现在,我们通过以下代码组合它:

var oCombinedFilter = new sap.ui.model.Filter({
    filters: [oDateFilter, oInventoryFilter],
    and: true
});

对于将inventory属性设置为true的所有元素,此过滤器返回true(确保参数是布尔值!)并且日期设置为" 31.12.9999"。

有关详细信息,请参阅sap.ui.model.Filter