2

在我的包中,我使用 htmlwidgets 来呈现此处dndTree实现的拖放对角树。我将原始代码更改为一个大函数,其中JSON(创建自)并且是从 HTMLWidgets 传入的元素。makeTree(treeData,el)treeDatajsonliteel

在我在网上看到的示例中,设置 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 ) 上,但希望这里的相关掘金足以识别我的错误。

4

0 回答 0