В ExtJs3 моя команда сделала следующее, чтобы загрузить данные в treestore. Каков эквивалентный способ сделать это в ExtJS4? Когда я делаю аналогичный код с помощью NodeInterface, я получаю сообщение «Can not read property» 0 «null».Вручную/динамически загружать данные в панель дерева?
Ext.Ajax.request({
url: servlet,
success: function(response, opts)
{
var jsonData = Ext.decode(response.responseText);
var root = new Ext.tree.AsyncTreeNode({
text: 'Root test',
draggable: false,
id: 'root',
children: jsonData.tree.data
});
tree.setRootNode(root);
//...
Обновление: мне все равно, как это сделать. У меня только два требования: (1) использовать один запрос сервера для получения несвязанных данных. (2) повторно использовать древовидные и сетчатые панели для разных данных
Я смог загрузить данные в динамически созданные древовидные панели. Однако использование setRootNode() не работает с существующими панелями дерева.
//this works
var tree = Ext.create('Ext.tree.Panel', {
root: {
text:'Application',
expanded:true,
children: jsonResponse.categoryTree.data
}
});
//this doesn't work
existingTree.setRootNode(root);
Чтобы быть откровенным, в extjs4 это будет выглядеть совершенно иначе. Я просто не уверен, сколько вам нужно, чтобы придерживаться части кода, который у вас выше. Но вкратце: 'NodeInterface' используется для украшения экземпляров модели, принадлежащих' TreeStore'. Вообще говоря, вы никогда не должны использовать этот класс. Не можете ли вы просто перенести код в правильный стиль extjs4? – Izhaki
@lzhaki посмотреть мое обновление –