在我的包中,我使用 htmlwidgets 来呈现此处dndTree
实现的拖放对角树。我将原始代码更改为一个大函数,其中JSON(创建自)并且是从 HTMLWidgets 传入的元素。makeTree(treeData,el)
treeData
jsonlite
el
在我在网上看到的示例中,设置 d3 块大小的方法是:
var width = el.getBoundingClientRect().width;
var height = el.getBoundingClientRect().height;
var tree = d3.layout.tree()
.size([height, width]);
这种方法可以很好地在 RStudio 查看器中制作图表,甚至可以将其弹出到浏览器中。但是,当使用包含的 Shiny 钩子时,el.getBoundingClientRect().height
返回 0 (我检查了 a console.log(height);
)。宽度使用闪亮的钩子适当地响应,但我无法做任何事情来让高度响应输入。
我更进一步,在dndTree.js
初始化步骤的文件中,我包含了一个控制台日志:
initialize: function(el, width, height) {
console.log(height);
return{}
}
它也返回一个 0 表示高度。
最终,我向生成树的函数添加了另一个参数fHeight
,如果边界矩形报告高度为 0,则将高度设置为fHeight
. 虽然这不是一个好的解决方案,因为现在有两个明显的高度控制器,但只有一个有效,而且它仅在提供像素数作为数字时有效。
为什么el
使用默认的闪亮钩子时元素的高度为 0?
这是我第一次尝试使用 htmlwidgets,老实说,我从来没有从头开始编写 d3。我一直在使用工作示例并尝试将其变成可用的小部件。我的包代码在 github ( https://github.com/bmewing/df2hjson ) 上,但希望这里的相关掘金足以识别我的错误。