d3js:节点在我的树形图中无法正确折叠
d3js: Nodes don't collapse correctly in my tree diagram
我正在创建一个像这样的 d3 可折叠意图树,但我在节点折叠方式方面遇到了一些问题。
如果单击顶层,则没有问题。节点按预期折叠。但是,如果单击向下一级,则单击的节点将占据主节点的位置,这是不正确的。
我能够重现问题并将其设置在 jsFiddle 中以供参考。我认为这与我JSON.stringify
使用的点有关,但我不确定。这是特定的代码块。
d3.json("flare.json", function(flare) {
flare.x0 = 0;
flare.y0 = 0;
console.log(flare);//Outputs flare.json
//Takes the variable and exchanges the work "key" for "name" and "values" for "children"
var source = JSON.parse(JSON.stringify(flare).replace(/"key":/g, '"name":').replace(/"values":/g, '"children":'))
console.log(source);//From what I can tell, this also outputs flare.json
update(source);
});
任何帮助将不胜感激!谢谢!!
问题是您正在使用新源调用update
,特别是您单击的元素
function click(d) {
if (d.children) {
d._children = d.children;
d.children = null;
} else {
d.children = d._children;
d._children = null;
}
update(d);
}
d
是您单击的元素,现在在更新函数中被引用为source
function update(source) {
// Compute the flattened node list. TODO use d3.layout.hierarchy.
var nodes = tree.nodes(source);
//...
}
要解决此问题,只需使用原始 json 对象flare
而不是新源...
function update(source) {
// Compute ...
var nodes = tree.nodes(flare);
// ...
}
我能够让它工作。
在上面的小提琴示例中的第 65 行,我称之为 update(source)
.变量source
需要断言到另一个变量,该变量可以在tree.nodes()
部分中的第 72 行调用。
我用一个工作示例更新了这里的小提琴。
感谢@chazsolo帮助我排除故障!
相关文章:
- 如何从d3js中折叠的所有节点开始
- vis.js:如何用鼠标点击来展开/折叠节点
- onbeforeunload JavaScript 函数不应该在树视图节点展开/折叠时调用 asp.net
- Dynatree js - 折叠特定节点
- 如果节点在 extjs 树面板中打开,如何折叠节点
- 更改所选节点样式,d3.js可折叠缩进树
- d3js:节点在我的树形图中无法正确折叠
- 加载网页后,在树视图中如何显示子/节点的展开和折叠
- d3强制可折叠布局-所有节点都折叠的起始页
- 当选择更改时,ASPxTreeList展开/折叠根节点
- D3可折叠树不同的节点颜色
- 我如何为一个分支折叠所有父节点
- 是否有一种方法可以自动打开D3折叠树节点逐个节点(对于有子节点的节点)
- Jquery treeview-如何通过单击按钮展开/折叠给定的单个节点
- 可调整大小的矩形节点在D3折叠树
- 控制可折叠布局中节点的展开
- Extjs 4.2 TreeGrid折叠/展开节点不会移除前面的节点
- 如何区分手动和程序化节点展开/折叠
- D3强制布局:折叠子节点的子集(不透明度改变)
- 希望将展开和折叠功能添加到作为父节点的动态生成的文件中