ExtJS树形面板有些麻烦。我需要单击某个树节点以在另一个树面板中显示该节点的一些数据。
我有两个模型:
Ext.define('AuthADM.model.RoleModel', {
extend: 'Ext.data.TreeModel',
fields: [
'nodeID',
'parentID',
'text',
'modules',
'groupID',
'appID'
],
associations: [{
type: 'hasMany',
model: 'AuthADM.model.RoleModuleModel',
name: 'modules',
associationKey: 'modules'
}]
和
Ext.define('AuthADM.model.RoleModuleModel', {
extend: 'Ext.data.TreeModel',
fields: [
'name',
'text',
'functions',
'children'
],
associations: [{
type: 'hasMany',
model: 'AuthADM.model.ModuleFunctionsModel',
name: 'functions',
associationKey: 'functions'
}],
belongsTo: 'AuthADM.model.RoleModel'
在角色树中的选定侦听器上,我尝试将一些记录添加到RoleModule树中:
roleClicked: function(grid, record, rowIndex, columnIndex, event) {
if (record && record.isLeaf()) {
// cath nested data fromm role tree record
var roleModules = record.get('modules');
// or I try todo this from record nested store
//roleModules = record.modulesStore.proxy.reader.jsonData;
// get role module tree view
var roleModuleView = this.getRoleModuleTreePane();
// I try to add new childrens two root node
roleModuleView.getRootNode().removeAll();
roleModules.forEach(function(record) {
var newNode = Ext.create('AuthADM.model.RoleModuleModel', record);
roleModuleView.getRootNode().appendChild(record);
roleModuleView.getRootNode().expand();
});
}
}
如果我为其他角色节点执行此操作-它的工作。但是,如果我对一个角色节点执行两次操作,则我所有的模块节点都不是子节点:
我尝试做一些不同的事情:
roleClicked: function(grid, record, rowIndex, columnIndex, event) {
if (record && record.isLeaf()) {
// cath nested data fromm role tree record
var roleModules = record.get('modules');
// or I try todo this from record nested store
//roleModules = record.modulesStore.proxy.reader.jsonData;
// get role module tree view
var roleModuleView = this.getRoleModuleTreePane();
// create new root element data
var rootJsonData = {
name : 'roleName',
text: 'roleName',
expanded: true,
leaf: false,
children: roleModules
};
// create record for it
var newNode = Ext.create('AuthADM.model.RoleModuleModel', rootJsonData);
// set new record as root node
roleModuleView.getRootNode().removeAll();
roleModuleView.setRootNode(newNode);
roleModuleView.getView().refresh();
}
}
我做错了什么以及如何设置树的数据?