Ext JS 4: Filtrar un TreeStore

Originalmente publiqué esto en los foros de Senchaaqu pero no recibí ninguna respuesta (aparte de mi propia respuesta, que publicaré pronto), así que voy a volver a publicarla aquí y ver si obtengo más ayuda.

He estado investigando cómo filtrar un TreeStore en 4.0.7. He intentado lo siguiente:

El model

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

La tiend

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

El árbo

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

El filtr

var filter = Ext.create('Ext.util.Filter', {
  filterFn: function(item) {
    return item.data.text == 'leaf1';
  }
});

Así que creo que mi problema es ... No sé cómo usar este filtro debido a que TreeStore en realidad no hereda ningún tipo de funciones de filtro como una tienda normal. He intentado

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.

Normalmente, si tengo una cuadrícula y creo un filtro como el anterior, solo puedo hacermyTree.store.filter(filter) y tomará el elemento / filtro de cada fila en lo que devuelvo ... pero estoy pensando porque TreeStore no hereda una función de filtrado, eso no se pasa.

Si alguien pudiera proporcionar algo de claridad sobre lo que estoy haciendo mal o cualquier idea sobre cómo configurar una función de filtro / mi proceso de pensamiento, continúe. Agradecería cualquier ayuda.

Respuestas a la pregunta(10)

Su respuesta a la pregunta