2016-09-26 22 views
0

У меня есть TreeMenu с некоторыми узлами:Как изменить узел в TreeMenu?

{ 
    text: 'Test', 
    leaf: true 
} 

Я приложил слушателя на TreeMenu:

listeners: { 
    contextmenu: function(node, event) { 

    ContextMenu.showAt(event.getXY()); 
    event.stopEvent(); 

    } 
} 

Но я не знаю, как изменить узел:

// HTML don't changed 
node.text = 'my value'; 

// Uncaught TypeError: node.reload is not a function 
node.reload(); 

UPD

Я решил так:

node.setText('my value'); 

ответ

1

Дерево должно иметь какой-то store/корень (NodeInterface). Все, что вам нужно сделать, это изменить значение в store/root, и дерево будет автоматически изменено.

Вы не должны использовать node.text = 'my value', потому что в большинстве случаев это будет не просто простой объект. Вы должны использовать node.set('text', 'My Text');

Функция обработчика для изменения может выглядеть следующим образом:

handler: function() { 
     var tree = Ext.ComponentQuery.query('treepanel')[0]; 
     var child = tree.getRootNode().getChildAt(0); 
     child.set('text', 'Chaned text'); 
    } 

Проверить эту скрипку: https://fiddle.sencha.com/#fiddle/1hc1

Я не уверен, какой именно вариант ExtJS вы используете? Ext 3? Более или менее концепция должна быть одинаковой для всех версий Ext.