代码之家  ›  专栏  ›  技术社区  ›  Sergey Stolyarov

如何按需重新加载ext.tree.treepanel?

  •  7
  • Sergey Stolyarov  · 技术社区  · 15 年前

    我想创建ext.tree.treepanel组件,并定期从外部URL加载内容。所以我写了一些

     new Ext.tree.TreePanel({
            root: {
                nodeType: 'async',
                text: 'asdasd',
                draggable: false,
                id: 'folders-tree-root'
            },
            loader: new Ext.tree.TreeLoader()
    });
    

    现在我想重新加载这棵树,所以我写:

    tree.loader.dataUrl = 'folders-sample.json';
    tree.root.reload();
    

    什么也没发生。

    添加 : 我找到的唯一方法是将一些无效值设置为 dataUrl 帕拉姆 TreeLoader 创造:

     new Ext.tree.TreePanel({
            root: {
                nodeType: 'async',
                text: 'asdasd',
                draggable: false,
                id: 'folders-tree-root'
            },
            loader: new Ext.tree.TreeLoader(dataUrl: 'something')
    });
    
    1 回复  |  直到 12 年前
        1
  •  7
  •   Awalias rwilliams    12 年前

    你要找的是 load treeloader的方法。所以在举个例子的情况下,这样的事情应该是可行的。

    tree.getLoader().load(tree.root);
    

    以下是我的完整示例 demo 站点也是如此。这是一个有点做作和黑客从一个extjs的演示,但它应该得到你需要的东西。

    Ext.onReady(function() {
        var root = new Ext.tree.AsyncTreeNode({
            text: 'Ext JS',
            id: 'src'
        });
        var reloadTree = function() {
            tree.enable();
            tree.getLoader().dataUrl = 'get-nodes2.php';
            tree.getLoader().load(tree.root);
        };
    
        var tree = new Ext.tree.TreePanel({
            animate: true,
            autoScroll: true,
            nodeType: 'async',
            loader: new Ext.tree.TreeLoader(),
            containerScroll: true,
            border: false,
            disabled: true,
            id: 'myTree'
        });
    
        var myPanel = new Ext.Panel({
            items: tree,
            border: false,
            tbar: [{
                text: 'Refresh',
                handler: reloadTree
            }]
        });
    
        tree.setRootNode(root);
        myPanel.render('tree');
    });
    

    干杯