我正在尝试使用QueryFilter对象为rallycardboard动态创建过滤器。我首先创建一个QueryFilter数组,其中包含对一个属性/值对的过滤。然后,我检查其他一些字段的值,以决定是否将这些属性添加到QueryFilter。但是,似乎在创建后,即使我能够访问该对象,也拒绝将其附加到该对象。

以下是其结构的示例:

var filters = [Ext.create('Rally.data.QueryFilter', {
    property: 'attr1',
    operator: '=',
    value: this.attr1
})];

if (this.attr2 !== "") {
    filters[0].and(Ext.create('Rally.data.QueryFilter', {
        property: 'attr2',
        operator: '=',
        value: this.attr2
    }));
}

if (this.attr3 !== "") {
    filters[0].or(Ext.create('Rally.data.QueryFilter', {
        property: 'attr3',
        operator: '=',
        value: this.attr3
    }));
}

最佳答案

看起来必须将返回的对象重新分配到数组内部,如下所示:

var filters = [Ext.create('Rally.data.QueryFilter', {
    property: 'attr1',
    operator: '=',
    value: this.attr1
})];

if (this.attr2 !== "") {
    filters = [filters[0].and(Ext.create('Rally.data.QueryFilter', {
        property: 'attr2',
        operator: '=',
        value: this.attr2
    }))];
}

if (this.attr3 !== "") {
    filters = [filters[0].or(Ext.create('Rally.data.QueryFilter', {
        property: 'attr3',
        operator: '=',
        value: this.attr3
    }))];
}

10-07 14:20