2012-05-29 2 views
3

Я пытаюсь динамически создавать фильтры для карты ралли с помощью объекта QueryFilter. Сначала я создаю массив QueryFilter, который содержит фильтрацию по одной паре свойств/значений. Затем я проверяю некоторые другие поля для значений, чтобы решить, добавлять ли эти свойства в QueryFilter. Однако кажется, что после создания, хотя я могу получить доступ к объекту, он отказывается присоединяться к нему.Rally App SDK 2.0: Невозможно изменить объект 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 
    })); 
} 

ответ

1

Похоже объекта, возвращенного должен быть переназначены внутри массива, как например:

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 
    }))]; 
}