在我的包dndTree
中,我使用htmlwidgets来渲染拖放对角树,如实现here。我将原始代码更改为一个大函数makeTree(treeData,el)
,其中treeData
是JSON(从jsonlite
创建),el
是从HTMLWidgets传入的元素。
在网上看到的例子中,设置d3块大小的方法是:
var width = el.getBoundingClientRect().width;
var height = el.getBoundingClientRect().height;
var tree = d3.layout.tree()
.size([height, width]);
此方法适用于在RStudio查看器中生成图形,甚至可以将其弹出到浏览器。但是,当使用包含的Shiny hook时,el.getBoundingClientRect().height
返回0(我使用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),但希望这里的相关掘金足以识别我的错误。