javascript - 单击 dagre-d3 中的节点

标签 javascript d3.js dagre-d3

我正在使用degre-d3,但在获取单击节点的节点数据时遇到问题。单击时有一个事件,但 d3.select(this) 似乎没有为我提供相关数据(如果可能的话,我希望获得节点名称、标签和其他对象数据。

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 日: 这里说我必须重写 renderer.drawNodes 方法:https://github.com/cpettitt/dagre-d3/issues/67

这是指定的代码:

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

我不知道应该如何以及在哪里使用此代码覆盖......

最佳答案

他们的 Wiki 中的这个示例可能会有所帮助 http://cpettitt.github.io/project/dagre-d3/latest/demo/hover.html

关于javascript - 单击 dagre-d3 中的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25742645/

相关文章:

dagre-d3 - 如何更新dagreD3节点样式而不重新渲染图

javascript - 使用 Dagre d3 缩放后重新渲染 HTML

javascript - BigInt 的优化整数对数 base2

javascript - 需要一些有关 D3 饼图布局的帮助,将行添加到标签

javascript - 将超链接分配给 dagre-d3 中的节点

javascript - 使用 D3pie 的响应式图表

javascript - 放大水平条形图中的画笔

javascript - 通过 jquery 或 javascript 更改最后一行的样式

javascript - 将辅助函数分配(或不分配)给一个对象需要权衡什么?

javascript - 比较两个自定义格式日期jquery