使用Button将节点添加到TreePanel。新手怎么样?

时间:2013-11-25 04:51:37

标签: extjs sencha-architect

我有一个按钮,我点击了一个点击事件。

我还有一个用静态JSON加载的TreePanel。

TreePanel的ItemID为projectTree

在我的按钮点击事件中,我有:

var treeNode = projectTree.getRootNode();
treeNode.expandChildren(true); // Optional: To see what happens
treeNode.appendChild({
        name: 'Child 4',
        leaf: true,
        element : 6
});
treeNode.getChildAt(2).getChildAt(0).appendChild({
        name: 'Grand Child 3',
        leaf: true,
        element: 7
});

它不会添加节点。我做错了什么?

被修改

var treeNode =  this.child('#projectTree').getRootNode();
treeNode.expandChildren(true); // Optional: To see what happens
treeNode.appendChild({
        name: 'Child 4',
        leaf: true,
        element : 6
});

// This one does not work
treeNode.childNodes(0).nextSibling.appendChild({
        name: 'Grand Child 3',
        leaf: true,
        element: 7
});

1 个答案:

答案 0 :(得分:0)

您需要先引用TreePanel,不能只使用itemID作为参考。有很多方法可以做到这一点,最简单的方法是使用Ext.getCmp

var projectTree = Ext.getCmp('projectTree');

假设您只有1个带有该itemID的组件,如果没有,最好使用ComponentQuery,这也是我首选的方法。例如,如果您的TreePanel位于具有itemID“TreePanelContainer”的Container中:

var projectTree = Ext.ComponentQuery.query('#TreePanelContainer > #TreePanel');

<强>更新

是否需要使用nextSibling?你为什么不用childNodes[1]

treeNode.childNodes[1].appendChild({

小提琴:fiddle.sencha.com/#fiddle/1rb

也许我错了,但我检查了文档,并且TreeNode没有element配置。也许你正在使用odler版本代码。尝试Sencha页面的官方文档。