После дней борьбы с этой проблемой я наконец-то смог получить функциональность, хотя и не столь удовлетворительным образом. Кроме того, в настоящий момент скрыты только конечные узлы.
фильтрация всех узлов, которые не упоминают "текст":
t.getRootNode().cascadeBy(function(n){
if (!n.hasChildNodes() &&
n.raw && n.raw.text.toLowerCase().indexOf(text.toLowerCase()) < 0) {
toRemove.push({ node: n, parent: n.parentNode });
}
});
Чтобы восстановить позже, запустите:
function restoreTrees() {
for (var n in toRemove) {
toRemove[n].parent.appendChild(toRemove[n].node);
}
toRemove = [];
}
Есть много недостатков с этим решением. Включая, что восстановленное дерево, вероятно, будет иметь другой порядок для своих узлов. Но, по крайней мере, это некоторый прогресс.
Хотелось бы увидеть лучше! (Если бы он прекрасно работал в Ext JS 3, но теперь эти проклятые узлы больше не имеют функции .ui.hide ()).