在 FIORI 中过滤模型导致 "f.forEach is not a function"

Filtering a model in FIORI leads to "f.forEach is not a function"

我正在尝试读取带有过滤器的模型:

         var oFilter = new sap.ui.model.Filter({
            filters: [
                new sap.ui.model.Filter({
                    path: 'attr1',
                    operator: sap.ui.model.FilterOperator.EQ, 
                    value1: value
                }),
                new sap.ui.model.Filter({
                    path: 'attr2', 
                    operator: sap.ui.model.FilterOperator.EQ,
                    value1: value2
                })
            ], 
            and: true
        });

        model.read("/pathToEntitySet", 
            {
                success: function(oData, response) {
                    console.log("i am here");
                },
                error: function(oError){
                    console.log(oError);
                },
                filters: oFilter
            }
        );

但是,当我添加过滤器时总是得到 "f.forEach is not a function":oFilter 到 model.read 操作。

我正在使用 FF 68.5。

知道这个错误的来源吗?

filters 需要一个数组。您传递了一个对象。两个选项:

选项 A:删除包装纸

当应用具有不同路径的多个过滤器时,会自动假定 AND。所以你可以简单地做

const aFilter = [
    new sap.ui.model.Filter({
        path: 'attr1',
        operator: sap.ui.model.FilterOperator.EQ, 
        value1: value
    }),
    new sap.ui.model.Filter({
        path: 'attr2', 
        operator: sap.ui.model.FilterOperator.EQ,
        value1: value2
    })
];

model.read("/pathToEntitySet", {
    success: ...
    error: ...
    filters: aFilter 
});

选项 B:添加另一个包装器

保持你的过滤器不变,在将它传递给 filters:

时将 oFilter 括起来
model.read("/pathToEntitySet", {
    success: ...
    error: ...
    filters: [oFilter]
});