无法在extjs中设置两次树存储数据

时间:2018-08-12 11:19:14

标签: javascript tree extjs4

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();
        });
    }
}

如果我为其他角色节点执行此操作-它的工作。但是,如果我对一个角色节点执行两次操作,则我所有的模块节点都不是子节点: First click Second click

我尝试做一些不同的事情:

    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();

    }
}

如果执行两次,则将所有节点作为扩展文件夹: First click second click

我做错了什么以及如何设置树的数据?

0 个答案:

没有答案