ExtJs 4.2:TreePanel 递归根节点加载而不是子节点

Posted

技术标签:

【中文标题】ExtJs 4.2:TreePanel 递归根节点加载而不是子节点【英文标题】:ExtJs 4.2: TreePanel recursive root node load instead of children 【发布时间】:2014-01-31 15:42:42 【问题描述】:

使用 ExtJs v4.2.1(试用版)我无法从 JSON 文件构建完整的 treePanel。每次展开/折叠子节点时,都会向服务器发出请求,该请求以相同的 JSON 响应,从而复制根节点。 首先,我需要从 JSON 文件中解释 rood 节点,而不是在存储中硬编码,其次,ajax 请求只是读取 JSON 文件来模拟服务器响应。

所以在谷歌上搜索了很多阅读问答之后,这里是What I've Tried:

检查了所有节点的叶子=true/false (see) 存储中的硬编码根节点 向节点添加了 loaded=true (see) 向代理添加了一个读取器以指向 JSON 响应中的根节点 (see) 玩弄了 rootVisible=bool 还有更多...

如何在这个版本的 ExtJs (v4.2.1) 中从 JSON 加载包含子节点的树?

【问题讨论】:

【参考方案1】:

我不想绑定到一个事件并做一个解决方法,这必须在没有任何自定义函数或覆盖的情况下工作(有很多解决方法建议这样做)。

所以这对我有用:

查看/Menus.js:

Ext.define('ExtApp.view.Menus', 

    extend      : 'Ext.tree.Panel',
    alias       : 'widget.Menus',
    store       : 'Menus',
    rootVisible : false,
    autoScroll  : true,
    xtype       : 'Menus',
    viewConfig  : 
        plugins     :  ptype: 'treeviewdragdrop' 
    ,
    useArrows   : true,
);

商店/Menus.js:

Ext.define('ExtApp.store.Menus', 
    extend  : 'Ext.data.TreeStore',
    proxy   : 
        type    : 'ajax',
        url     : 'path/to/file.json'
    ,
    root    : 
        expanded: true
    
);

file.json(. 不会在树中加载/可见):


    text    : '.',
    children: [
        text    :'m0',
        id      :'m0',
        leaf    :true
    ,
        text    :'m1',
        expanded: true,
        id      :'m1',
        children:[
            text    :'m11',
            id      :'m11',
            leaf    :false,
            children:[
                text    :'m111',
                id      :'m111',
                leaf    :true
            ]
        ,
            text    :'m12',
            id      :'m12',
            leaf    :false,
            children:[
                text    :'m121',
                id      :'m121',
                leaf    :true
            ]
        ,
            text    :'m13',
            id      :'m13',
            leaf    :true
        ,
            text    :'m14',
            id      :'m14',
            leaf    :true
        ]
    ,
        text    :'m2',
        children:[
            text    :'m21',
            id      :'m21',
            leaf    :true
        ]
    ]

希望这对其他人有所帮助,因为我看到了很多关于树面板类似问题的问题。

【讨论】:

如果你有一个错误“config.init is undefined”,treeviewdragdrop插件没有加载它需要的所有东西,所以你需要手动要求它们,见sencha.com/forum/…

以上是关于ExtJs 4.2:TreePanel 递归根节点加载而不是子节点的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS - 将 Treepanel 节点向上/向下移动代码

Javascript - ExtJs - TreePanel组件

ExtJS6 TreePanel树节点合上展开显示不同图标

在 ExtJs 4.0 TreePanel 中更改文件夹和叶子节点的顺序

如何在extjs 4.1中的treePanel中移动节点标签的复选框结尾

ExtJS treepanel 没有得到真正的子项