У меня есть панель дерева, для которой я динамически генерирую корневой узел на основе группы, выбранной в поле со списком. На основе выбранной группы JSON будет возвращен с сервера и после цикла через объект JSON. Я генерирую узлы панели дерева. Если выбрано «ММ», которое является родительской группой для всех других групп. Корневым узлом будет «Мобильное измерение», и все его дочерние узлы будут другими группами.Динамическая проблема генерации панели дерева extjs
var groupKey = field.getValue();
var groupName = field.getRawValue();
var subGroupName = '';
var treePanel = Ext.getCmp('permissionsTreePanel');
var len = [];
treePanel.setRootNode(null);
if(newValue){
Ext.Ajax.request({
url:'.../GetAllUserPermissions.php',
method:'POST',
params:{groups:newValue},
success:function(result, request){
var json = result.responseText;
var temp = Ext.decode(json);
var obj = {};
var mainGroup = {};
var item = {};
var menu = {};
var children = [];
var subGroups =[];
var groups = '';
var module = [{
"text": "Administrator",
"leaf": true,
"checked": false,
"id":"GROUP_ADMIN",
"formBind": true,
"name":"GROUP_ADMIN"}];
//Ext.Msg.alert('Message',Ext.encode(temp[groupKey]));
groupTree = function (group,name) {
for(var i=0;i<Object.keys(group).length;i++){
for(var key in group[i]){
for(var n=0;n<Object.keys(group[i][key]).length;n++){
item = {
"text": group[i][key][n],
"checked": false,
"id": key+"_"+group[i][key][n],
"name": key+"_"+group[i][key][n],
"formBind":true,
"leaf": true
};
children.push(item);
}
menu = {"text": key,
"leaf": false,
"id": key,
"children": children
};
module.push(menu);
children = [];
}
}
obj = {"text":name,
"expanded": true,
"formBind": true,
"children": module
};
module = [{
"text": "Administrator",
"leaf": true,
"checked": false,
"id":"GROUP_ADMIN",
"formBind": true,
"name":"GROUP_ADMIN"}];
return obj;
};
if(groupKey != 'MM'){
groupTree(temp[groupKey],groupName);
treePanel.setRootNode(obj);
} else {
treePanel.getRootNode().set("text",groupName);
var i = 0;
for(var key in temp[groupKey]){
i++;
mainGroup = groupTree(temp[groupKey][key],key);
obj = {};
treePanel.getRootNode().appendChild(mainGroup);
if(i==2){
//break;
}
}
treePanel.getRootNode().expand();
//treePanel.setRootNode(subGroups);
Ext.Msg.alert('Message',Ext.encode(subGroupName));
}
},
failure:function(result, request){
}
}); } else {
Ext.Msg.alert('Message','No value is selected!'); }
Эти группы были сформированы, но события не работают хорошо. Есть некоторые ошибки при выборе товаров и отправке событий. Щелкнув один узел, другой узел расширяется. Это неизвестное поведение вызывает проблему с панелью дерева.
Ваша помощь будет оценена!
Заранее спасибо. :)