【发布时间】:2016-10-26 20:51:49
【问题描述】:
我正在将一个 d3 应用程序移植到 Aurelia 中,并且需要访问图表的 SVG 父级的宽度和高度,以便使图表正确地适应当前的屏幕尺寸。
在移植之前,它看起来像这样,正确地填满了整个容器:
这就是它在 Aurelia 中的样子:
它通过调用d3.select('#timeline-svg').style('width') 和d3.select('#timeline-svg').style('height') 来设置它的尺寸。但是现在,在 Aurelia 中,无论何时我调用它们,它都会返回 300 x 150 的尺寸,无论 SVG 的实际尺寸是多少。我尝试在 SVG 的 div 父级(具有相同的尺寸)上调用相同的代码,但这也没有帮助。
然后我想尝试双向数据绑定并将我的 SVG 标记更改为 <svg id="timeline-svg" width.two-way="width"></svg>(并在我的视图模型中声明了相应的 width 变量),但我收到错误:Error: Observation of a "svg" element's "width" property is not supported.
我什至尝试过使用aurelia-pal,将其注入为DOM 并调用:
attached() {console.log(this.DOM.getElementById("timeline-svg").style.width);} 但给我的只是一个空字符串。
有一个要点here(减去 d3 代码,但我想弄清楚的是如何从 app.js 中访问 app.html 中 SVG 元素的尺寸)。我究竟做错了什么?谢谢!
【问题讨论】:
-
当你调用 getElementById 时你几乎肯定不想要#
-
感谢您的关注。这解决了 TypeError,但现在该日志语句只返回一个空字符串。