2015-06-28 54 views
1

我有一個XML視圖中定義的列表。我在XML視圖中綁定列表的項目,但我想在JavaScript代碼中定義過濾器,因爲過濾器要在XML中定義複雜。我在FilterUtils中創建了過濾器,現在我想將該過濾器數組設置爲列表的過濾器。SAPUI5 XML視圖與JavaScript代碼中定義的過濾器

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; 
    } 
} 

回答

0

一旦你完成了創建所有過濾做到了更新您的控制器像這樣綁定:

+0

我試過你的解決方案但導致列表被顯示後列表被過濾的問題,所以列表被刷新兩次。 –

+0

好的,我明白了你的觀點。您可以通過在您的XML視圖中省略項目聚合定義並在控制器中進行過濾器計算後進行初始綁定來規避此問題。不幸的是,還沒有更好的解決方案。 [這篇文章](http://stackoverflow.com/q/25387580/1969374)是指一個稍有相關的問題。 –