我正在尝试使用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
}))];
}