2017-02-10 5 views
2

Ui5 doc предоставил пример, чтобы объединить список фильтров или с AND или OR:Как объединить два файла sap.ui.model.Filter с другим оператором?

new sap.ui.model.Filter({ 
    filters: [...], 
    and: true|false 
}) 

У меня есть два массива фильтра, который сцепить с OR, как сцепить эти два массива с ALL? Как это:

ПРОДУКТОВ $ пропустить = 0 & $ топ = 20 & $ фильтр = (substringof ('Один путь', ID) или substringof ('Один путь', тип) и substringof ('а', название) или направление эк 'A'

Ниже мой код:

oTableSearchState1 = [new Filter(filterArray1, false)] //OR 
oTableSearchState2 = [new Filter(filterArray2, false)] //OR 
oTable.getBinding("items").filter(oTableSearchState1, "Application"); 

(я пробовал new Filter(filterArray1.concat(filterArray2), false); и oTable.getBinding("items").filter(oTableSearchState1, "Application").filter(oTableSearchState2, "Application"), и они не работают, очевидно.)

ответ

1

Для случаев, когда вам необходимо выполнить сложные операции, подобные этим, вы можете использовать вложенную фильтрацию. Вы можете использовать фильтр в фильтре для выполнения таких операций.

Вот пример фильтра на основе вашего вопроса:

var oFilter = new Filter({ 
      filters: [ 
       new Filter({ 
        filters:[ 
         new Filter("ID", FilterOperator.Contains, "One way"), 
         new Filter("Type", FilterOperator.Contains, "One way") 
        ], 
        and : false 
       }), 
       new Filter({ 
        filters:[ 
         new Filter("Name", FilterOperator.Contains, 'A'), 
         new Filter("Direction", FilterOperator.EQ, "A") 
        ], 
        and : false 
       }) 
      ], 
      and: true 
     });