搜索字段:过滤嵌套对象

时间:2021-02-21 09:41:13

标签: sapui5 filtering jsonmodel

大家好,

我有以下数据结构:

[    {
        "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 的信息。

这样的过滤能做到吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

这是一个关于过滤器构造函数下的测试函数的例子: 过滤结果将返回一行包含过滤器中引入的 materialDesc 描述的列表:

   tableview.register(NativeAds.self, forCellReuseIdentifier: "Ads")


   let nativeAdCell = tableView.dequeueReusableCell(
       withIdentifier: "Ads", for: indexPath) as! NativeAds
相关问题