2012-06-13 4 views
15

backbone.js에서 뷰의 렌더링 함수는 나중에 DOM에 연결할 수있는 결합되지 않은 html을 생성합니다.d3.js 및 svgs를 사용하여 Backbone.js에서 렌더링

현재 svg를 추가하려면 HTML에 기존 타겟이 있어야합니다. 그런 다음 data/enter 패턴을 사용하여 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"); 

또는,에 재료를 추가하는 부착 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이 Jquery 객체와 잘 작동한다는 것을 나타내는 d3 문서가 나와 있습니다. 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