【问题标题】:How can I get my tree panel to recognize all child nodes?如何让我的树面板识别所有子节点?
【发布时间】:2013-08-23 04:35:21
【问题描述】:

我正在尝试遍历树形面板中的所有节点。问题是如果我在调用node.eachChild() 之前不展开节点,该节点会认为它没有任何子节点。 (即使是这样)

如果你看我的 jsfiddle,点击 Traverse 按钮​​而不展开任何节点,它只会显示根节点 + 它的三个子节点。现在,如果您返回并展开所有子节点,请关闭它们然后再次单击按钮,它会显示所有节点。

http://jsfiddle.net/sQ97F/

如何让我的树面板加载所有子节点,以便它在 onReady 之后立即通过所有子节点?

注意:我也不希望节点在 onLoad() 中展开,因此修改它以使用 tree.getRootNode().expand() 不是一个好的解决方案。

【问题讨论】:

    标签: extjs nodes extjs3 treepanel


    【解决方案1】:

    loader: new Ext.tree.TreeLoader({ preloadChildren: true }) 添加到 TreePanel 配置应该可以工作。

    new Ext.tree.TreePanel({
        renderTo: Ext.getBody(),
    
        loader: new Ext.tree.TreeLoader({ preloadChildren: true }), //New Config
    
    
        id: 'mainTree',
        title: 'Packages',
        useArrows: true,
        autoScroll: true,
        containerScroll: true,
        frame: true,
        rootVisible: false,
        root: rootNode,
        buttons: [traverse]
    });
    

    【讨论】:

    • 嗯,当我将 dataUrl(链接到生成的 json)添加到 treeloader 配置时,它仍然没有预加载孩子,有什么想法吗?
    • 不幸的是,我认为这就是它在 ExtJS 3 中的工作方式。您可以扩展 TreeLoader 或 TreePanel 并尝试获得所需的结果,或者加载 JSON 并手动创建 AsyncTreeNode 而不是使用 dataUrl。如果我有时间,我会看一下 Tree 源代码,看看加载整个东西需要什么。
    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多