我的当前递归有问题。当我记录this.memb和this.child时,这两个值是相同的。但是,情况应该不是这样。从理论上讲,孩子应该是this.memb的孩子。
buildGraphNode(treeNode){
if(!(treeNode.data instanceof Array)){
this.memb = this.member("" + treeNode.label, "" + treeNode.label, 'images/user1.png', '#d0000c', '', 'B');
this.members.push(this.memb);
}
for (var i = 0; i<treeNode.children.length; i++) {
this.child = this.buildGraphNode(treeNode.children[i]);
if(this.child != null && this.memb !=null){
console.log(this.memb);
console.log(this.child);
this.connections.push(this.link(this.memb,this.child));
}
}
return this.memb;
}
答案 0 :(得分:0)
你正在使用过多的引用“this”。您在此处操作相同的this
对象,最终将修改外部上下文。请尝试使用局部变量:
buildGraphNode(treeNode){
if(!(treeNode.data instanceof Array)){
var memb = this.member("" + treeNode.label, "" + treeNode.label, 'images/user1.png', '#d0000c', '', 'B');
this.members.push(memb);
}
for (var i = 0; i<treeNode.children.length; i++) {
var child = this.buildGraphNode(treeNode.children[i]);
if(child != null && memb !=null){
console.log(memb);
console.log(child);
this.connections.push(link(memb,child));
}
}
return memb;
}
我不知道您是如何构建代码的,因此可能需要更改this
的其他实例。