我正在使用Javascript Infovis Toolkit创建一个具有4个级别(奥运会>体育>赛事>奖牌)的树图,我想一次显示三个级别,但只显示2/3的标签。
(例如:在俯视图中,我会显示所有不同的体育项目,以及体育项目中的所有事件,但不会显示事件的标签,因为太多了。)
我使用以下代码来尝试隐藏级别,但当我放大时,它不会取消隐藏它们。
onPlaceLabel: function(domElement, node){
if (node._depth == 0) {console.dir(node);}
if (node._depth > 1) {
domElement.style.display = 'none';
} else {
domElement.style.display = '';
}
}
当放大/缩小时,_depth似乎不会改变——它是每个节点的静态属性。
我可以编写一个条件,根据设置为父节点的深度当前来更改要显示的深度级别。有人知道我在哪里找到的吗?
谢谢!
想明白了!onBeforeComputer();方法在计算所有内容之前对所选节点执行操作。参见以下代码:
//sets the selected node depth as the .currentParentDepth
onBeforeCompute : function(node){
if (typeof this.currentParentDepth === "undefined") {
this.currentParentDepth = 0;
}
else {
this.currentParentDepth = node._depth;
}
},
onPlaceLabel: function(domElement, node){
if (this.currentParentDepth == 0) {
if (node._depth > 1) {
domElement.style.display = 'none';
} else {
domElement.style.display = '';
}
} else if (this.currentParentDepth == 1) {
if (node._depth > 2) {
domElement.style.display = 'none';
} else {
domElement.style.display = '';
}
}
}