2008-10-11 9 views

ответ

1

Наконец-то я нашел ответ на их форумах. Для тех, кто заинтересован именно здесь:

if (tree) 
{ 
    var delNode; 
    while (delNode = tree.root.childNodes[0]) 
     tree.root.removeChild(delNode); 
} 
-1
if (tree) { var delNode; while (delNode = tree.root.childNodes[0]) tree.root.removeChild(delNode); } 

Я не знаю, Ext, но я предполагаю, что у них есть DOM абстракции, которые могли бы сделать, что проще. Эквивалент в Prototype было бы что-то вроде:

tree.root.immediateDescendants().invoke('remove'); // or 
tree.root.select('> *').invoke('remove'); 

Если только tree.root ссылается на объект коллекции, а не DOM узел корневого дерева, но заимствует DOM имена методов API? Это кажется маловероятным, особенно для современной библиотеки JS.

3

В моем случае у моего дерева Ext есть скрытый корневой узел типа AsyncTreeNode. Если я хочу, чтобы очистить дерево и заселить с сервера, это довольно просто:

tree.getRootNode().reload(); 
0

я столкнулся с подобной проблемой, и решение я придумал было «тег» узел имеет то, не загружен, когда он рухнул, таким образом, заставляя перезагрузки, когда он был вновь расширен ,

listeners: { 
    collapsenode: function(node){ 
    node.loaded = false; 
}, 
3

В Ext JS 4:

, если вы хотите, чтобы перезагрузить данные панели дерева, необходимо перезагрузить дерево магазин:

getCmp('treeId').getStore().load(); 

где treeId является идентификатором дерево. Если у вас есть идентификатор магазина, вы можете напрямую использовать load() для идентификатора магазина.

удалить все дочерние узлы:

getCmp('treeId').getRootNode().removeAll(); 

Однако удаление дочерних узлов не является необходимым для перегрузки узлов дерева из его магазина.