将节点添加到我的树中,我正在使用javascript push:
var parent1 =
{
"id": "parent1",
"data": {extra:"some extra data"},
"parent": "#",
"type": "myType1",
"text": "I am a parent",
"state": {"opened": false}
}
nodes.push(parent1);
var child1 =
{
"id": "Child1",
"data": {extra:"some extra data"},
"parent": "parent1",
"type": "myType2",
"text": "I am a child",
"state": {"opened": false}
}
nodes.push(child1);
var child2 =
{
"id": "Child2",
"data": {extra:"some extra data"},
"parent": "child1",
"type": "myType3",
"text": "I am child2",
"state": {"opened": false}
}
nodes.push(child2);
正如您所看到的,我在父级和子级的“data”属性中包含了额外的数据。
然而,我发现,当我选择一个节点时,下面代码中的child1 var是未定义的....因此,不知何故,jsTree正在删除我的数据属性......
var selectNode = function (e, item) {
console.log('item selected %o', item);
switch (item.node.type) {
case "myType3":
var child = item.node.data,
child1NodeId = item.node.parent,
child1Node = _.where(nodes,{id:child1NodeId}),
child1 = child1NodeId[0].data
break;
}
}
有人可以帮忙吗? 这只会在选择孩子的孩子时发生。
答案 0 :(得分:0)
您需要访问item.node.data
属性。另请更正节点child1
的父级Child1
至Child2
。
您的代码可能如下所示:console.log('item selected %o', item.node.data);
请参阅小提琴:JS Fiddle
答案 1 :(得分:0)
我发现了问题。原因是我试图检索节点。
而不是:
var selectNode = function (e, item) {
console.log('item selected %o', item);
switch (item.node.type) {
case "myType3":
var child = item.node.data,
child1NodeId = item.node.parent,
child1Node = _.where(nodes,{id:child1NodeId}),
child1 = child1NodeId[0].data
break;
}
}
我应该使用JSTree API“getNode”代替:
var selectNode = function (e, item) {
console.log('item selected %o', item);
switch (item.node.type) {
case "myType3":
var treeinst = $('#myTree').jstree(true),
child = item.node.data,
child1NodeId = item.node.parent,
child1Node = treeInst.get_node( child1NodeId )
child1 = child1Node.data
break;
}
}