openui5 - 写一个FilterOperator'不包含'

时间:2015-12-06 18:29:39

标签: sapui5

以下是所有FilterOperators的列表:sapui5.netweaver.ondemand.com

我的代码:

var searchValue = "searching";

var myFilter = new sap.ui.model.Filter("var", sap.ui.model.FilterOperator.Contains, searchValue, false);

但是这样,如果它们在键“var”中包含字符串“search”,则将选择所有项目。如果选择项目的过滤器只有在“var”键中没有字符串searchValue时才能编写过滤器?

示例:

  var = {(A,B,C), (B,C,D), (C,D,E)};
  searchValue = "A";

  //after filtering
  result = {(B,C,D), (C,D,E)};

1 个答案:

答案 0 :(得分:0)

知道你正在使用什么样的模型会很好。总之...

目前没有"开箱即用"支持这一点。你可以做的是使用"测试" sap.ui.model.Filter的属性,它将是您的自定义比较的函数(因此您将实现您想要的)。这适用于JSONModel。但是,由于OData实际上是服务器端模型,我假设ODataModel的实现将忽略"测试"功能。

如果您使用的是OData,那么您通常会获得一些好处。 OData 2.0 spec允许"逻辑否定"。例如,获取客户名称不包含的所有客户的列表" Al"你可以这样称呼:

http://services.odata.org/V2/Northwind/Northwind.svc/Customers?$filter=not substringof('Al', CompanyName)&$format=json

然而,似乎UI5的ODataModel目前没有官方支持。我检查了sap.ui.model.odata.ODataUtils的代码,并且没有处理"逻辑否定"。你可以在这里做的是创建URL字符串,包括带有逻辑否定的$ filter,然后自己执行GET请求以获取数据。另一种选择是扩展UI5本身,但我认为这可能会有点棘手......

我想这值得https://github.com/SAP/openui5/的功能请求: - )