【问题标题】:Rendering in Backbone.js using d3.js and svgs使用 d3.js 和 svgs 在 Backbone.js 中渲染
【发布时间】:2012-06-13 21:52:26
【问题描述】:

在backbone.js 中,视图的渲染函数会生成未附加的html,以后可以附加到dom。

目前,我必须在 HTML 中有一个现有目标才能将 svg 附加到。然后我使用数据/输入模式将元素插入到 svg 中。有没有办法让 d3.js 在不将其附加到 dom 的情况下生成 svg?

var svg = d3.select("#target").append('svg')
    .attr("viewBox","0 0 100 100"); 

svg.selectAll("circle")
    .data(data)
    .enter().append("circle")
        .attr("r", 10)
        .style("fill", "black");

或者,是否可以为 d3 提供一个未附加的 dom 元素来附加内容?像这样的东西? D3.js 文档建议 select 可以接受节点,但以下对我也不起作用

var svg = d3.select(this.$el).append('svg')  // Uncaught TypeError: Object [object Object] has no method 'appendChild' 
    .attr("viewBox","0 0 100 100");     

svg.selectAll("circle")
    .data([1,2,3])
    .enter().append("circle")
        .attr("r", 10)
        .style("fill", "black");

【问题讨论】:

  • 你试过d3.selectAll([this.el])吗? D3 可能对 jQuery 对象不满意,它可能想要一个真正的数组。
  • 我试过了(不起作用)。顺便说一句,我所指的 d3 文档表明 d3 确实可以很好地与 Jquery 对象配合使用。 github.com/mbostock/d3/wiki/Selections#wiki-d3_select --> "这些方法也可以接受节点,这对于集成第三方库如jQuery或开发者工具很有用"

标签: backbone.js d3.js


【解决方案1】:

我在这篇帖子SVG not rendering properly as a backbone view找到了答案

d3.select(this.el) 

成功了!

【讨论】:

  • 是的,d3 不能选择 jquery 对象。 d3.select(this.$el[0]) 也应该可以工作。
  • 正是我一直在寻找的!谢谢!!
  • 为什么d3不能选择jquery对象?
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 2013-06-17
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 2016-06-30
相关资源
最近更新 更多