当我们在该特定字段上应用格式化程序时,搜索过滤器会起作用吗?例如:

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/

10-11 13:14