2014-09-09 3 views
1

degre-d3을 사용하고 있는데 클릭 한 노드에 대한 노드 데이터를 가져 오는 데 문제가 있습니다. 클릭 만 d3.select (이) (나는 가능하면 노드 이름, 라벨 및 추가 오브젝트 데이터를하고 싶은 나에게 관련 데이터를 얻을 것 같지 않을 때 나는 이벤트를dagre-d3에서 노드 클릭

app.controller "DashboardElementShowController", ($scope, DashboardElementIndexService) -> 
    init_app = -> 
    # Create a new directed graph 
    g = new dagreD3.Digraph() 

    g.addNode "bpitt", 
     label: "html Brad Pitt <b>test</b>" 
    g.addNode "hford", 
     label: "Harrison Ford" 
    g.addNode "lwilson", 
     label: "Luke Wilson" 
    g.addNode "kbacon", 
     label: "Kevin Bacon" 

    g.addEdge null, "bpitt", "kbacon", 
    g.addEdge null, "hford", "lwilson", 
    g.addEdge null, "lwilson", "kbacon", 

    renderer = new dagreD3.Renderer().edgeInterpolate("cardinal") 
       .edgeTension(0.8) 
    renderer.edgeInterpolate('linear'); 
    renderer.run g, d3.select("svg g") 
    d3.select("svg g").on("click", (d, i, k) -> 
     console.log d3.select(this) # doesn't seem to have relevant info I need 
    ) 


    init_app() 

편집을. : 2014년 9월 10일 :

constructor: 
    @renderer.drawNodes @_drawNodes().bind @ 

_drawNodes: -> 
    oldDrawNodes = @renderer.drawNodes() 
    (graph, svg) -> 
    # catch drawed nodes 
    svgNodes = oldDrawNodes graph, svg 
    svgNodes.on 'click', (nodeId) -> console.log 'node clicked', nodeId 

내가 어디에서 어떻게 내가이 코드를 오버라이드 (override) 할 필요가 확실하지 않다 : https://github.com/cpettitt/dagre-d3/issues/67

이 지정한 코드는 다음과 같습니다 은 여기 내가 renderer.drawNodes 메소드를 오버라이드 (override) 할 필요가 말한다. ..

답변

관련 문제