Я первоначально разместил это на форумах Sencha здесь , но не получил никаких ответов (кроме моего собственного ответа, который я скоро опубликую), поэтому я собираюсь опубликовать его здесь и посмотреть,Мне больше помогают.
Я ломал голову над тем, как отфильтровать TreeStore в 4.0.7.Я пробовал следующее:
Модель
Ext.define('model', {
extend: 'Ext.data.Model',
fields: [
{name: 'text', type: 'string'},
{name: 'leaf', type: 'bool'},
{name: 'expanded', type: 'bool'},
{name: 'id', type: 'string'}
],
hasMany: {model: 'model', name: 'children'}
});
Магазин
Ext.define('myStore', {
extend: 'Ext.data.TreeStore',
model: 'model',
storeId: 'treestore',
root: {
text: 'root',
children: [{
text: 'leaf1',
id: 'leaf1',
children: [{
text: 'child1',
id: 'child1',
leaf: true
},{
text: 'child2',
id: 'child2',
leaf: true
}]
},{
text: 'leaf2',
id: 'leaf2',
leaf: true
}]
},
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
Дерево
var myTree = Ext.create('Ext.tree.Panel', {
id: 'myTree',
selType: 'cellmodel',
selModel: Ext.create('Ext.selection.CellModel', {mode: 'MULTI'}),
rootVisible: false,
store: Ext.create('myStore'),
width: 300
});
Фильтр
var filter = Ext.create('Ext.util.Filter', {
filterFn: function(item) {
return item.data.text == 'leaf1';
}
});
Так что я думаю, что моя проблема ... Я не знаю, как использовать этот фильтриз-за того, что TreeStore фактически не наследует какие-либо функции фильтра, такие как обычное хранилище.Я пробовал:
myTree.store.filters.add(filter);
myTree.store.filters.filter(filter); // This seems to work
// I can get into the filterFn when debugging, but I think item is the "this" of my filter object.
Обычно, если у меня есть сетка и я создаю фильтр, как указано выше, я могу просто сделать myTree.store.filter(filter)
, и он будет захватывать элемент / фильтр каждой строки на том, что я возвращаю... но я думаю, потому что TreeStore не наследует функцию фильтрации, это не передается.
Если кто-то может дать некоторую ясность относительно того, что я делаю неправильно, или любое понимание того, какнастроить функцию фильтра / мой процесс мышления, пожалуйста, продолжайте.Буду признателен за любую помощь.