如果用户输入“Mil *”,则搜索应返回“Milk”,“Milk Cake”,“Milk sweet”,“Milky bar chocolate”...... 我正在尝试创建一个SAP UI5应用程序,其中过滤器理解正则表达式。然后结果显示在表格中。
var oFilter = new sap.ui.model.Filter({
path : "ProductName",
operator : CustomFilterToAcceptRegEx,
value1 : "Milk"
});
无论如何我都想不到这样做。任何意见将是有益的。 我是全新的javascript& SAP UI5
答案 0 :(得分:2)
您上面的代码无法正常运行,因为您传递的运算符绝对无效,请参阅API docs for sap.ui.model.Filter。仅使用允许的FilterOperators之一。这是一个例子:
var oFilter = new sap.ui.model.Filter({
path : "ProductName",
operator : sap.ui.model.FilterOperator.Contains,
value1 : "Milk"
});
上面的示例匹配“ Milk ”,这意味着用户不需要使用“*”,而是可以在(搜索)字段中输入“Milk”。
如果您想要允许类似“M * lk”的内容,您可以使用以下内容:
var oFilter = new sap.ui.model.Filter({
path : "ProductName",
test : function(oValue){
//do something
},
value1 : "Milk"
});
Constructor Details of sap.ui.model.Filter告诉您如何实施 oFilterInfo.test 功能:
函数,用于过滤应返回布尔值的项目,以指示当前项目是否被保留
但是,请注意OData,因为ODataModel实际上是服务器端模型。如果您将OData与SAP Gateway结合使用,则“自由文本”搜索可能比使用过滤器更好。 SAP GW识别用于自由文本搜索的查询参数“搜索”。然后,GW服务的实现应正确处理该参数......
另外,请确保真正了解javascript中的正则表达式是如何工作的。这是一个例子:
RegExp(".*world.*", "g").test("hello world"); // true
还要考虑如何转义搜索字符串以使其成为有效的正则表达式。您不能简单地传入从搜索框中收到的任何字符串。因此,在继续之前,首先要了解正则表达式如何工作...