【发布时间】:2017-04-18 08:24:40
【问题描述】:
我有一个这样的 JSON 模型:
{
"VEHICLES": [
{
"vehicleId": "0001",
"routeName": "Ginza Line"
},
{
"vehicleId": "0002"
"routeName": "Another Line"
}
}
我正在实现这样的排序功能:
onSearch : function (oEvent) {
var sQuery = oEvent.getParameter("query");
if (sQuery) {
var oFilter1 = new Filter("vehicleId", function(value) {
return value.includes("sQuery");
});
var oFilter2 = new Filter("routeName", function(value) {
return value.includes("sQuery");
});
var allFilter = new Filter([oFilter1, oFilter2], false});
var list = this.getView().byId("masterList");
list.getBinding("items").filter(allFilter);
}
}
当我在搜索字段中输入“000”时,我希望返回两个数据项,但它没有返回。为什么?
我尝试了单个“vehicleId”过滤器,它起作用了。
我也试过了
var allFilter = new Filter({
filters: [oFilter1, oFilter2],
and: false //OR
});
但是 allFilter.b 并返回了undefined,我很困惑。
参考:
https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.model.Filter.html
【问题讨论】:
-
上面的代码只是一个小例子吗?否则,在这种情况下,应使用
new Filter("vehicleId", FilterOperator.Contains, sQuery)而不是自定义过滤器函数。这是example。 UI5 将负责规范化和大写搜索查询,这使得过滤更容易,更不容易出错。 -
@boghyon,是的,这也有效!我以为
FilterOperator.Contains只适用于odata 模型,我错了。
标签: sapui5