2

我正在使用 Javascript Infovis Toolkit创建一个具有 4 个级别(Olympics > Sport > Event > Medals)的树形图,并且我想一次显示三个 - 但只显示 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 似乎没有改变——它是每个节点的静态属性。

我也许可以编写一个条件,根据设置为父节点的深度当前节点来更改要显示的深度级别。有谁知道我在哪里可以找到那个?

谢谢!

4

1 回答 1

2

弄清楚了!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 = '';          
        }           
    }
}
于 2012-07-28T13:29:07.393 回答