6

このようなツリー構造で

var rootNode = { 
              id: 'root',
              text : 'Root Node',
    expanded : true,
    children : [
    {
        id :  'c1',
        text : 'Child 1',
        leaf : true
    },
    {
        id :  'c2',
        text : 'Child 2',
        leaf : true
    },
    {
        id :  'c3',
        text : 'Child 3',
        children : [
        {
            id :  'gc1',
            text : 'Grand Child',
            children : [
            {
                id :  'gc11',
                text : 'Grand Child 1',
                leaf : true
            },
            {
                id :  'gc12',
                text : 'Grand Child 2',
                leaf : true
            }
            ]
        }
        ]
    }
    ]
};

var tree = new Ext.tree.TreePanel({
    id: 'treePanel',
    autoscroll: true,
    root: rootNode
});

ノードの子ノード (「孫」など) を追加するにはどうすればよいですか?

ツリーパネルのルートをトラバースして子にアクセスできますが、Firebug で console.logged しましたが、機能はありません。フォーマットされていないコードで申し訳ありません。フォーマットできませんでした。

ツリーパネル

4

2 に答える 2

13

次のようにします。

var treeNode = tree.getRootNode();
treeNode.expandChildren(true); // Optional: To see what happens
treeNode.appendChild({
        id: 'c4',
        text: 'Child 4',
        leaf: true
});
treeNode.getChildAt(2).getChildAt(0).appendChild({
        id: 'gc13',
        text: 'Grand Child 3',
        leaf: true
});

これが必要な場合は、NodeInterface クラスを確認してください。多くの便利なメソッドがあります: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.NodeInterface

于 2012-04-23T08:30:10.570 に答える
0

古いスレッドかもしれませんが、選択したノードに子を追加するという問題がありました。選択したノードを展開して新しい子を表示したかったのですが、失敗しました。

理由: 子を追加した選択したノードのプロパティ 'leaf' が true に設定されていました。それは正しかった。しかし、追加により、これはもはや真実ではありません。そのため、明らかに、Ext はノードの展開を拒否しています...

注意: ノードを別のノードに追加するときは、parentNode の「leaf」プロパティを「false」に設定してください。

var newNode = Ext.create('some.model.TreeModel', savedNode);
newNode.set('parentId', record.parentLocationId);
selectedNode.set('leaf', false);
selectedNode.appendChild(newNode);
selectedNode.expand();
treeView.getSelectionModel().select(newNode);
于 2015-09-10T11:36:42.270 に答える