htmlwidget没有从容器元素

时间:2016-02-19 15:56:03

标签: r shiny htmlwidgets

在我的包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),但希望这里的相关掘金足以识别我的错误。

0 个答案:

没有答案