如何将对象传递到d3-context-menu动态菜单列表

时间:2019-02-13 08:11:44

标签: javascript d3.js

对于一个项目,我使用以下上下文菜单:https://www.npmjs.com/package/d3-context-menu

“动态菜单列表”(https://www.npmjs.com/package/d3-context-menu#dynamic-menu-list)允许将菜单编写为功能。这很好。但是,功能选择允许将数据传递到菜单,以显示不同的项目。

我在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_menu”。

我已经尝试过的:

d3.contextMenu(node_menu(d))

=>“ d”只是值“ 1”

.on("contextmenu", function(d) {
        d3.contextMenu(node_menu(d));
    })

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

如何将“ d”对象传递给“ node_menu”函数?

编辑:
也许有用的“ node_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;
    }
};

1 个答案:

答案 0 :(得分:1)

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

data