Ext JS 4: фильтрация TreeStore

Я первоначально отправил это на форумах СенчиВот но не получил никаких ответов (кроме моего собственного ответа, который я скоро опубликую), поэтому я собираюсь опубликовать его здесь и посмотреть, получу ли я больше помощи.

Я ломал голову над тем, как фильтровать 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 не наследует функцию фильтрации, которая не передается.

Если кто-то может дать некоторую ясность относительно того, что я делаю неправильно, или узнать, как настроить функцию фильтра / мой процесс мышления, пожалуйста, продолжайте. Буду признателен за любую помощь.

Ответы на вопрос(5)

Ваш ответ на вопрос