что о:
filterFn: function(rec) {
return Ext.Array.contains(chkv, rec.get('name'));
}
Я хочу убедиться, что вы знаете, что вам не нужно перезагружать магазин, если вы хотите отфильтровать его. Похоже, это то, что вы делаете в приведенном выше фрагменте.
На самом деле есть и другие проблемы, то, что на самом деле будет делать ваш обработчик onCheckBoxGroupChange
(если вы оставите его так, как указано выше), будет следующим:
Каждый раз, когда пользователь устанавливает флажок, он сначала перезагружает магазин с сервера, затем добавляет выбранный фильтр к фильтрам магазина, а затем фильтрует магазин по сохраненным фильтрам.
E.g.:
Пользователь устанавливает флажок "Альберт"
Store reloads
Store adds `["Albert"]` filter function
Store performs filtering with `["Albert"]` filter function
Пользователь устанавливает флажок "Фрэнсис"
Store reloads
Store adds `["Albert", "Francis"]` filter function
Store performs filtering with `["Albert"]` filter function
Store performs filtering with `["Albert", "Francis"]` filter function
Пользователь снимает флажок "Альберт"
Store reloads
Store adds `["Francis"]` filter function
Store performs filtering with `["Albert"]` filter function
Store performs filtering with `["Albert", "Francis"]` filter function
Store performs filtering with `["Francis"]` filter function
Вы бы просто постепенно получали все больше и больше фильтров. Плюс излишне много раз перезагружать магазин. Я не думаю, что это то, что вы собираетесь.
Вам следует просмотреть документы на фильтрация хранилища данных, чтобы узнать больше о том, как это сделать.
Кроме того, в своем вопросе вы сказали, что у вас возникла эта проблема, когда вы установили два флажка, потому что он возвращал массив. Согласно тексту вашего вопроса, вы также получаете массив, когда устанавливаете один флажок (["Albert"]
). В нем есть только один элемент, но это массив.
Вот почему мое решение (которое требует, чтобы ваша переменная chkv
была массивом) будет работать.
person
egerardus
schedule
23.07.2012