首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索字段:过滤嵌套对象

搜索字段:过滤嵌套对象
EN

Stack Overflow用户
提问于 2021-02-21 17:41:13
回答 1查看 85关注 0票数 0

大家好,

我有以下数据结构:

代码语言:javascript
复制
[    {
        "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模型中的数据。我尝试了以下方法:

代码语言:javascript
复制
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的东西。

这样的过滤能做到吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-02-22 10:38:01

下面是一个关于Filter构造函数下的测试函数的示例: Filter result将返回一行列表,其中包含filter中引入的materialDesc描述:

代码语言:javascript
复制
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);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66300950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档