【发布时间】:2012-04-18 15:57:13
【问题描述】:
我正在尝试在非根节点被选中时动态地将子树节点添加到它。
我是这样实现的:
首先,我用 TreeStore 填充我的树,然后动态添加子树节点,我在树控制器中的 itemexpand 事件上处理它。
//pThis is a NodeInterface obj of the selected node
itemexpand: function (pThis, pEOpts) {
//type is an attribute that I added so that I know what type of node that got selected
if (pThis.raw.type === 'Staff' && !pThis.hasChildNodes()) {
var staffNodeAry = [{text:"Teachers", type:"ChildStaff", leaf: false},
{text:"Principals", type:"ChildStaff", leaf: false}];
pThis.appendChild(staffNodeAry);
}
}
这很有效,因为我可以在“员工”类型下看到“教师”和“校长”节点,但到目前为止我发现了 2 个问题:
1) 控制台出现这个错误:
未捕获的类型错误:无法读取未定义的属性“internalId”
我不知道为什么,但如果有人能启发,那就太好了。
2) 当我展开“Teachers”和“Principals”时,itemexpand 返回的 NodeInterface obj 有一个未定义的原始对象。
所以我不能这样做:pThis.raw.type
根据我的理解,我不需要创建一个新的 TreeStore 来添加任何新的子节点,我认为通过创建一个遵循 NodeInterface 的对象数组就足够了,但我可能错了。 如果有人能指出我正确的方向,那就太好了。
汉地
更多信息:
我所做的实际上是遵循 ExtJs 4 文档,所以我认为这是 ExtJs 4 框架上的一个错误。
我也用 Extjs-4.1.0-rc3 对此进行了测试,它也产生了同样的错误。
【问题讨论】:
标签: extjs4