2012-06-13 71 views
15

在Backbone.js的,視圖的渲染函數生成以後可以附加到DOM獨立的HTML。渲染在Backbone.js的使用d3.js和svgs

目前,我必須有一個現有的目標在HTML給我追加SVG來。然後我使用數據/輸入模式將元素插入svg。有沒有辦法讓d3.js生成svg而不附加到dom?

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"); 

另外,是否有可能提供一個獨立的dom元素的d3來追加的東西?像這樣? D3.js文件表明,選擇可以接受的節點,但下面,我無法正常工作或

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"); 
+2

你試過'd3.selectAll([this.el])'? D3可能不滿意jQuery對象,它可能需要一個真正的數組。 –

+0

我試過了(不起作用)。順便說一句,我所指的d3文檔表明d3確實可以很好地與Jquery對象配合使用。 https://github.com/mbostock/d3/wiki/Selections#wiki-d3_select - >「這些方法還可以接受的節點,這對於與第三方庫,如jQuery或開發工具的集成是有用的」 – kumikoda

回答

12

我找到了答案在這個崗位SVG not rendering properly as a backbone view

d3.select(this.el) 

的伎倆!

+3

是, d3不能選擇jquery對象。 'd3.select(this。$ el [0])'也應該有效。 –

+0

非常好,非常感謝。 –

+0

正是我一直在尋找的!謝謝!! – andyengle