大家好,
我有以下数据结构:
[ {
"supplierCode": "supplier1",
"supplierDesc": "supplier1Desc",
"pos": [ {
"poNum": "11111",
"materialNum": "matNum11",
"materialDesc": "matDesc11"
},
{ "poNum": "11112",
"materialNum": "matNum22",
"materialDesc": "matDesc22"}
] },
{"supplierCode": "supplier2",
"supplierDesc": "supplier2Desc",
"pos": [ {
"poNum": "22222",
"materialNum": "matNum11",
"materialDesc": "matDesc11"},
{"poNum": "22223",
"materialNum": "matNum22",
"materialDesc": "matDesc22"}]
}
]我的任务是根据pos数组中的属性过滤JSON模型中的数据。我尝试了以下方法:
myList = this.getView().byId("myList");
var binding = myList.getBinding("items");
if (!query) {
binding.filter([]);
} else {
binding.filter([new sap.ui.model.Filter([
new sap.ui.model.Filter("supplierCode", sap.ui.model.FilterOperator.Contains, query),
new sap.ui.model.Filter("supplierDesc", sap.ui.model.FilterOperator.Contains, query),
new sap.ui.model.Filter("pos/materialDesc", sap.ui.model.FilterOperator.Contains, query)
], false)]);
}不走运。
此外,我发现使用ODataModel是可能的,但我没有找到任何关于JSONModel的东西。
这样的过滤能做到吗?
谢谢。
发布于 2021-02-22 10:38:01
下面是一个关于Filter构造函数下的测试函数的示例: Filter result将返回一行列表,其中包含filter中引入的materialDesc描述:
onFilterInvoices: function(oEvent) {
// build filter array
var aFilter = [];
var sQuery = oEvent.getParameter("query");
if (sQuery) {
aFilter.push(new sap.ui.model.Filter({
path: "pos",
test: function(oValue) {
var oMaterials = oValue;
for (var i in oMaterials) {
if (oMaterials[i].materialDesc === sQuery) {
return true;
}
}
return false;
}
}));
}
// filter binding
var oList = this.getView().byId("listapp");
var oBinding = oList.getBinding("items");
oBinding.filter(aFilter);
}https://stackoverflow.com/questions/66300950
复制相似问题