2012-06-13 14 views
15

backbone.jsでは、ビューのレンダリング機能が後でドームにアタッチすることのできる結合されていないhtmlを生成します。d3.jsとsvgsを使用したBackbone.jsでのレンダリング

現在、私はsvgを追加するためにHTMLの既存のターゲットを持っていなければなりません。次に、data/enterパターンを使って要素をsvgに挿入します。 domに接続せずにsvgを生成するd3.jsを得る方法はありますか?

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

関連する問題