带有在JavaScript代码中定义的筛选器的SAPUI5 XML视图

SAPUI5 XML View with filters defined in JavaScript code

本文关键字:筛选 XML 视图 SAPUI5 定义 JavaScript 代码      更新时间:2023-09-26

我在XML视图中定义了一个列表。我在XML视图中绑定了列表的项,但我想在JavaScript代码中定义过滤器,因为在XML中定义过滤器太复杂了。我在FilterUtils中创建过滤器,现在我想将该过滤器数组设置为列表的过滤器。

XML视图:

 <List id="order-List" items="{path: '/OrderSet',filters : ???} inset="false" growingScrollToLoad="true" growing="true" growingThreshold="5">

FilterUtils:

jQuery.sap.declare("de.my.util.FilterUtils");
jQuery.sap.require("sap.ui.model.FilterOperator");
de.my.util.FilterUtils = {
    /**
     * Returns the filter to request all mobile relevant orders of the current work center
     */
    buildFilterServiceOrdersOfCurrentWorkcenter: function () {
        var filterMnWkCtr = new sap.ui.model.Filter("MnWkCtr", sap.ui.model.FilterOperator.EQ, de.my.Component.getMetadata().getConfig().myConfig.mnWkCtr);
        var filterUserstatus = new sap.ui.model.Filter("Userstatus", sap.ui.model.FilterOperator.EQ, 'ACT');
        var filterOrderType = new sap.ui.model.Filter([new sap.ui.model.Filter("OrderType", sap.ui.model.FilterOperator.EQ, 'AS1'), new sap.ui.model.Filter("OrderType", sap.ui.model.FilterOperator.EQ, 'AS2'), new sap.ui.model.Filter("OrderType", sap.ui.model.FilterOperator.EQ, 'AS3'), new sap.ui.model.Filter("OrderType", sap.ui.model.FilterOperator.EQ, 'AS4')], false);
        var filterServiceOrders = new sap.ui.model.Filter([filterMnWkCtr, filterUserstatus, filterOrderType], true);
        return filterServiceOrders;
    }
}

创建完所有过滤器后,只需更新控制器中的绑定,如下所示:

var list = this.getView().byId("order-List");
list.getBinding("items").filter(filters);