Javascript 如何将对象传递到d3上下文菜单动态菜单列表

Javascript 如何将对象传递到d3上下文菜单动态菜单列表,javascript,d3.js,Javascript,D3.js,对于项目,我使用以下关联菜单: “动态菜单列表”()允许将菜单作为函数写入。这个很好用。但是,函数approch允许将数据传递到菜单,以区别要显示的项目 我调用D3树布局中的菜单,如下所示: nodeEnter.append("circle") .attr('class', function(d) { return 'nodeCircle ' + d.state;}) .attr("r", 0) .style("fill", function(d) {

对于项目,我使用以下关联菜单:

“动态菜单列表”()允许将菜单作为函数写入。这个很好用。但是,函数approch允许将数据传递到菜单,以区别要显示的项目

我调用D3树布局中的菜单,如下所示:

nodeEnter.append("circle")
    .attr('class', function(d) {
        return 'nodeCircle ' + d.state;})
    .attr("r", 0)
    .style("fill", function(d) {
        return d._children ? "lightsteelblue" : "#fff";
    })
    .on("mouseover", function(d) {
        show_tooltip(d);
    })
    .on("mouseout", function(d) {
        hide_tooltip(d);
    })
    .on("contextmenu", d3.contextMenu(node_menu)
    );
这是可行的,但我想将“d”传递给“node\u menu”

我已经尝试过的:

d3.上下文菜单(节点菜单(d))

=>“d”只是值“1”

=>完全不显示上下文菜单,如果我添加return也不显示

如何将“d”对象传递给“node\u menu”函数?

编辑:
“节点菜单”功能可能有帮助:

var node_menu = function (data) {
    console.log('data:');
    console.log(data);

    if (data.depth == 6) {
        return  node_menu_v1;
    }
    else{
        return node_menu_v2;
    }
};

数据
数组内部或外部创建多个菜单结构

var data = [
  {v: 1, menu: menu1},
  {v: 2, menu: menu2},
  {v: 3, menu: menu3}
];
...
.on('contextmenu', function(d) { d3.contextMenu(d.menu)(d);} );

谢谢你,这正是我需要知道的,“(d)”起作用了。我的工作代码现在是:.on(“contextmenu”,函数(d){d3.contextmenu(node_menu(d))(d);})@Seb取决于菜单变量,它是数组还是function@gerardo-另外,我知道你指的是哪一行代码。但是,如果我只是将“node_menu”函数传递给d3.contextMenu(),则“node_menu”函数中的“data”值仅为“1”。当用户选择某个操作时,我可以访问“数据”,因为它通过
d.action(elm,data,index)行传递但如果没有提供的解决方案@riov8,我无法根据“数据”显示不同的菜单。或者至少我不知道怎么做。这只是一个静态菜单数组,而不是像这里这样的动态菜单函数:你的编辑和链接让它更清晰。好的,谢谢。很抱歉,我造成了一些混乱,下次我会尽量讲清楚的。
var data = [
  {v: 1, menu: menu1},
  {v: 2, menu: menu2},
  {v: 3, menu: menu3}
];
...
.on('contextmenu', function(d) { d3.contextMenu(d.menu)(d);} );