当我们在该特定字段上应用格式化程序时,搜索过滤器会起作用吗?例如:
XML代码:
<Text id="id" text="{parts :['key>para1','key>para2','key>para3'],
formatter: '.formatter.someStatus'}"></Text>
控制器代码:
onSearch: function(oEvent) {
var sQuery = oEvent.getSource().getValue();
var oList = this.getView().byId("tableid");
var oBinding = oList.getBinding("items");
if (sQuery) {
var aFilter = [];
aFilter.push(new Filter("para1", FilterOperator.Contains, sQuery));
aFilter.push(new Filter("para2", FilterOperator.Contains, sQuery));
aFilter.push(new Filter("para3", FilterOperator.Contains, sQuery));
oBinding.filter(new Filter({
filters: aFilter,
and: false
}));
} else {} // Use empty filter to show all list items // oBinding.filter(new Filter([])); does not work oBinding.filter([]);
}
格式化程序代码:
sap.ui.define(["sap/ui/model/json/JSONModel"], function(JSONModel) {
return {
someStatus: function(a, b, C) {
if (a === "Y") {
return "Approve";
} else if (a === "N") {
return C;
} else {
return "";
}
}
};
});
其中a给出Y&N,C给出“拒绝:某些原因”。它给出正确的状态结果,但在搜索时未返回正确的数据。如果需要任何其他详细信息,请告诉我。
最佳答案
IIRC,通过使用格式化程序功能,绑定是单向的。这意味着,如果值为“ Y”,则通过格式化程序将其显示为“批准”,但是var sQuery = oEvent.getSource().getValue();
将返回“ Y”而不是“批准”。
关于javascript - 当我们在字段上应用格式化程序功能时,搜索功能将无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58819659/