我正在尝试使用/在SAPUI5中的一些东西,我实现了一个非常简单的搜索:
var filters = [];
var query = evt.getParameter("query");
if (query && query.length > 0) {
var nameFilter = new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.Contains, query);
filters.push(nameFilter);
}
var list = this.getView().byId("list");
var binding = list.getBinding("items");
binding.filter(filters);
Run Code Online (Sandbox Code Playgroud)
现在我有以下问题:通过这个逻辑,我可以通过一个人的名字来搜索,或者更确切地说过滤.我还有一些其他领域,如年龄,性别等,我也想搜索年龄或性别.所以我尝试创建第二个过滤器,例如"genderFilter",它使用"gender"字段.在此之后使用.push()方法将第二个过滤器添加到filters [] ..但是这不起作用.
我已经尝试过观看文档,看了不同的例子,尝试了不同的方法 - 但我很无奈.有人可以帮我解决这个问题吗?
小智 7
对于要求,此代码将起作用.
var list = this.getView().byId("list");
var binding = list.getBinding("items");
if( !query ) {
binding.filter( [] );
}
else {
binding.filter( [ new sap.ui.model.Filter([
new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.Contains, query ),
new sap.ui.model.Filter("gender", sap.ui.model.FilterOperator.Contains, query )
],false)
]
Run Code Online (Sandbox Code Playgroud)
根据API
对于手动过滤,您应该始终传递 FilterType
如果您将代码更改为
list.getBinding("items").filter(filters, sap.ui.model.FilterType.Application);
Run Code Online (Sandbox Code Playgroud)
它应该有效。
另请参阅最底部的https://openui5.hana.ondemand.com/docs/guide/BindingAggregations.html 。
| 归档时间: |
|
| 查看次数: |
70257 次 |
| 最近记录: |